当前位置: 技术问答>java相关
如何在sql server数据库中存文件?豪爽送分!
来源: 互联网 发布时间:2015-07-05
本文导语: 数据库中表为file_1,字段content为image类型,tent为字节数组,更新语句如下: stmt.executeUpdate("update file_1 set content='"+tent+"' where id=3"); 发现不管tent中为何内容,写到库中都是一样,这是为什么? 具体程序如下: //前...
数据库中表为file_1,字段content为image类型,tent为字节数组,更新语句如下:
stmt.executeUpdate("update file_1 set content='"+tent+"' where id=3");
发现不管tent中为何内容,写到库中都是一样,这是为什么?
具体程序如下:
//前面省略了连接数据库的部分
File f=new File("os.txt");
FileInputStream fis=new FileInputStream(f);
BufferedInputStream bis=new BufferedInputStream(fis);
int fileLength=(int)f.length();
byte[] tent=new byte[fileLength];
bis.read(tent,0,fileLength);
stmt.executeUpdate("update file_1 set content='"+tent+"' where id=3");
File fo= new File("kkd.txt");
FileOutputStream fos=new FileOutputStream(fo);
byte[] out;
rs=stmt.executeQuery("select * from file_1 where id=3 ");
rs.next();
out=rs.getBytes("content");
fos.write(out);
stmt.executeUpdate("update file_1 set content='"+tent+"' where id=3");
发现不管tent中为何内容,写到库中都是一样,这是为什么?
具体程序如下:
//前面省略了连接数据库的部分
File f=new File("os.txt");
FileInputStream fis=new FileInputStream(f);
BufferedInputStream bis=new BufferedInputStream(fis);
int fileLength=(int)f.length();
byte[] tent=new byte[fileLength];
bis.read(tent,0,fileLength);
stmt.executeUpdate("update file_1 set content='"+tent+"' where id=3");
File fo= new File("kkd.txt");
FileOutputStream fos=new FileOutputStream(fo);
byte[] out;
rs=stmt.executeQuery("select * from file_1 where id=3 ");
rs.next();
out=rs.getBytes("content");
fos.write(out);
|
对于这种动态参数的更新语句的执行,用你的这种方法肯定是不行的.
PreparedStatement pstmt = con.prepareStatement("update file_1 set content= ? where id=3");
pstmt.setBinaryStream(1,f, fileLength );
pstmt.executeUpdate();
PreparedStatement pstmt = con.prepareStatement("update file_1 set content= ? where id=3");
pstmt.setBinaryStream(1,f, fileLength );
pstmt.executeUpdate();
|
这种字段其实是个blob字段,用流处理.
|
BLOB类型