将文件写入SQL Server数据库怎么写啊?
我初学java,研究jsp,不懂请大侠赐教。vc、delphi、c#都很简单。可java把我难住了,看了好几本书,都没有。有的说用:jspSmartUpload组件,晕菜。 问题点数:100、回复次数:28Top
1 楼haisenmai(我应该做得到)回复于 2006-07-02 14:37:31 得分 0
upTop
2 楼trumplet(检查)回复于 2006-07-02 14:54:25 得分 0
写入数据库,用JDBC
jspSmartUpload是用于文件上传Top
3 楼luoshi1982(學習)回复于 2006-07-02 16:34:06 得分 0
oracle jdbc在哪裡有下給個鏈接Top
4 楼wspdelphi()回复于 2006-07-02 16:59:13 得分 0
to trumplet(检查) :jspSmartUpload中有将文件上传到数据库的功能。
能给我个例子吗?先谢了。难道这种在其他语言中,包括.net都很简单的问题,在java中就这么复杂?还是大家不屑于我这个菜鸟啊。大家帮忙啊。Top
5 楼trumplet(检查)回复于 2006-07-02 17:14:51 得分 0
用jspSmartUpload,是上传到服务器,上传后放到哪里,还要另外处理。可以把它存为磁盘文件,也可以另做他用。
oracle的JDBC驱动器,如果安装了oracle,可以找到ojdbc14.jar,就是这个了。Top
6 楼zebra007(呼呼)回复于 2006-07-02 17:37:25 得分 0
http://www.knowsky.com/3136.html
jspSmartUpload上传下载全攻略Top
7 楼tomison()回复于 2006-07-02 18:20:46 得分 0
得用I/O,先将文件的信息读入缓冲区,再从缓冲区中写入数据库Top
8 楼luoshi1982(學習)回复于 2006-07-02 18:55:35 得分 0
trumplet(检查), 我安裝了oracle,但是搜索不到ojdbc14.jar,我安裝的是oracle 9.0的,只在C:\ORANT\jdk\lib下找到一個classes.zip,是不是這個?Top
9 楼flymoon(花儿月)回复于 2006-07-02 19:29:26 得分 0
arasrarasdfdasfTop
10 楼FBjq(龙啸天驱)回复于 2006-07-02 23:13:46 得分 0
咦?不是说SQL SERVER的吗?
SQL的可以用JDBC:ODBC桥连接作,建立一个数据源。本来也可以用JDBC驱动,可惜,手头上的这个有问题,连接不成功……Top
11 楼Radar2006(中华英雄)回复于 2006-07-03 08:23:27 得分 0
upTop
12 楼yougucao379548695(郑州-小刘)回复于 2006-07-03 13:13:59 得分 0
哪个上传全攻略看了我的怎么还是不能上传,哪个组件在JB2006的工程里怎么放啊。怎么到处都是错误!55555555555555555Top
13 楼nlhlx(胡)回复于 2006-07-03 14:13:22 得分 0
最简单的方法是:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/newxy-html.tld" prefix="nhtml"%>
<%@ taglib uri="/WEB-INF/newxy-logic.tld" prefix="nlogic"%>
<nlogic:action1 id="act1" formName="fileForm"/>
<nhtml:form action="" formName="fileForm" enctype="multipart/form-data">
<input type="hidden" name="_table" value="table1"/><br />
文件1,不大于1024K:<nhtml:file property="file1" size="40" maxSize="1024"/><br />
文件2,不大于1024K:<nhtml:file property="file2" size="40" maxSize="1024"/><br />
</nhtml:form>
<nhtml:button actionId="act1" method="update"/>
表名:table1,两个保存文件的字段:file1,file2
不写一行java代码。
参看《文件上传至数据库》:http://www.newxy.net/doc.jsp#anchor15.2
可参见文件上传范例: http://www.newxy.net/zh_cn/samples/sample2/demo.jsp
也可下载范例。
Top
14 楼wspdelphi()回复于 2006-07-03 16:46:24 得分 0
to 胡立新:你很厉害,可是我不想用什么struts,hibernate等架构,我只想自己组织,哪怕辛苦,维护很累,但是我自己可以学习东西。因我现在正处在java知识学习期。
大侠们在这里说了一大堆数据连接,真是晕乎。我要的是将文件写入数据库(SQl Server)的image字段即blob字段中。Top
15 楼wspdelphi()回复于 2006-07-03 16:49:15 得分 0
数据库连接上后,写非binary类型blob的很是简单,也可以靠sql语句。但是文件写入blob我 就头大了,没有思路。给个例子吧。Top
16 楼LBN1012(星空)回复于 2006-07-03 21:47:18 得分 0
将文件读成字节流,然后写进大对象。
或者将文件的路径存入数据库,用的时候将路径读出来,在用java IO去操作文件Top
17 楼Sunny319(努力学习java中.)回复于 2006-07-03 22:03:24 得分 0
顶LBN1012(星空),说得很对!Top
18 楼zhl0369(T_stone)回复于 2006-07-04 09:54:22 得分 0
//操作时需要使用oracle的JDBC包,本例使用了oracle\ora92\jdbc\libOJDBC14.JAR
//注意:更新时一定要使用 FOR UPDATE 锁定含有LOB值的行
//用标签处理程序来定义客户标签的工作
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import oracle.jdbc.OracleResultSet; // 使用Oracle的ResultSet对象
import oracle.sql.BLOB; // 使用Oracle的BLOB对象,而不是sun的Blob
//实现TagSupport或BodyTagSupport接口
public class ORACLE_BLOB {
public static void main(String[] args) {
String dbUrl = "jdbc:oracle:thin:@192.168.0.82:1521:zhl";
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(dbUrl, "zhl", "zhl");
File fileIn = new File("c:\\a.gif");
File fileOut = new File("c:\\b.gif");
conn.setAutoCommit(false); // 取消Connection对象的auto commit属性
String file_name = fileIn.getName();
// 数据库中有一个item表,其中的file_name (varchar2)存储文件名,file_blob
// (blob)存储文件对象
String sql = "INSERT INTO item (file_name,file_blob) VALUES ('"
+ file_name + "',EMPTY_BLOB())"; // 使用“EMPTY_BLOB()“成生一个空blob
Statement stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);
sql = "SELECT file_blob FROM item WHERE file_name='" + file_name
+ "' FOR UPDATE"; // 使用“FOR
// UPDATE”得到表的写锁
ResultSet rs = stmt.executeQuery(sql);
rs.next();
BLOB blob = ((OracleResultSet) rs).getBLOB("file_blob"); // 得到BLOB对象
OutputStream out = blob.getBinaryOutputStream(); // 建立输出流
InputStream in = new FileInputStream(fileIn); // 建立输入流
int size = blob.getBufferSize();
byte[] buffer = new byte[size]; // 建立缓冲区
int len;
while ((len = in.read(buffer)) != -1)
out.write(buffer, 0, len);
in.close();
out.close();
conn.commit();
//输出到fileOut
sql = "SELECT file_blob FROM item WHERE file_name='" + file_name
+ "'";
rs = stmt.executeQuery(sql);
rs.next();
blob = ((OracleResultSet) rs).getBLOB("file_blob"); // 得到BLOB对象
in = blob.getBinaryStream();
out = new FileOutputStream(fileOut);
size = blob.getBufferSize();
System.out.println(blob.length());
buffer = new byte[size]; // 建立缓冲区
while ((len = in.read(buffer)) != -1)
out.write(buffer, 0, len);
in.close();
out.close();
conn.commit();
} catch (Exception ex) {
ex.printStackTrace();
try {
conn.rollback();
} catch (SQLException sqle) {
System.err.println(sqle.getMessage());
}
}
}
}Top
19 楼zhl0369(T_stone)回复于 2006-07-04 09:58:01 得分 0
代码有点乱,可以看这个
http://blog.csdn.net/zhl0369/archive/2006/06/16/802703.aspxTop
20 楼yougucao379548695(郑州-小刘)回复于 2006-07-04 10:01:05 得分 0
谁发给我哪个组件SmartUpload上传下载组件
luiguangshui@163.com
379548695我的QQTop
21 楼shanshuiboy()回复于 2006-07-04 10:08:28 得分 0
在百度搜SmartUpload,有很多Top
22 楼zhl0369(T_stone)回复于 2006-07-04 10:12:16 得分 0
yougucao379548695()
收邮件Top
23 楼wspdelphi()回复于 2006-07-05 15:28:20 得分 0
我写过一个文件报送的就是将文件的路径存入数据库,用的时候将路径读出来,在用java IO去操作文件的,可是现在我想把它放到sql server数据库中。真是困难啊。因为文件很小,放到数据库中好维护,放到硬盘上麻烦多多啊。还有病毒,^_^Top
24 楼sdxlh007(海)回复于 2006-07-05 15:31:35 得分 0
用io流,把文件读出来,要用的时候创建空文件,再把保存的信息读取到文件中Top
25 楼wspdelphi()回复于 2006-07-05 15:35:39 得分 0
to sdxlh007(海) :给个存取例子吧Top
26 楼sdxlh007(海)回复于 2006-07-05 16:02:31 得分 0
String tmp="";//用于接收文件的内容
File FileDir;
public boolean FileOpen() {//打开文件的方法
File file = 文件的路径;
FileDir = file;
StringBuffer sb = new StringBuffer();
try {
FileReader fr = new FileReader(file);
int i;
do {
i = fr.read();
if(i==-1){
}else{
sb.append((char) i);
}
} while (i != -1);
fr.close();
} catch (Exception ee) {
ee.printStackTrace();
}
tmp=sb.toString());
return true;
}
public boolean FileSevas() { //生成文件
File file = 获得要生成文件的文件的路径
try {
file.createNewFile();
FileOutputStream fos2 = new FileOutputStream(file);
String strTmp = 数据库读出来的内容
fos2.write(strTmp.getBytes());
fos2.flush();
fos2.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return true;
}Top
27 楼sdxlh007(海)回复于 2006-07-05 16:03:31 得分 0
tmp=sb.toString());
多了一个),要改
tmp=sb.toString();Top
28 楼wspdelphi()回复于 2006-07-05 18:36:01 得分 0
to sdxlh007(海) :明白你的意思了,唉看来我的思维还没有从其他语言转变过来,单纯想的是硬生生将文件通过java提供的函数放到blob字段中。一切都得靠自己。谢谢Top




