有一个表test,其字段image是image类型的.在java中可以用如下的方法保存:Filefile=newFile("src/down.gif");InputStreaminput=newFileInputStream(file);PreparedStatementps=con.prep...
有一个表test,其字段image是image类型的.在java中可以用如下的方法保存:
File file = new File("src/down.gif");
InputStream input = new FileInputStream(file);
PreparedStatement ps = con.prepareStatement("insert into test (id,image) values (?,?)");
int length = (int)file.length();
ps.setAsciiStream(1, '1');
ps.setAsciiStream(2, input,length);
ps.execute();
con.commit();
但是以上方法不是什么情况下都方便用.在我现在的一个应用中不太方便使用这种方法.我希望使用
Statement stm = con.createStatement();
String sql = "insert into test (id,image) values ('1',image数据)";
stm.execute(sql);
这样的方法来实现。但试了很久都不行,希望高手不吝赐教.
反编译看了,它最后也是放到一个byte数组里,但最后怎么存的我没找到。用statement怎么存一个byte数组啊.
我知道要放到inputStream里,我是在想既然ps.setAsciiStream(2, input,length);
ps.execute();
可以保存,那么inputStream流里面的字节,经过一种怎样的转换后可以象这样insert into test (id,image) values ('1',image转换后的数据)保存呢?
因为我的全部是动态生成的,连哪个数据库,连哪张表,全部是动态的,而且如果我一次要操作300条数据的话,也不一定是全部写入一个表,可能这一条数据写入A数据库的AA表,下一条就写进B数据库的BB表,所以sql语句全部是动态生成的,用PreparedStatement的话相对要麻烦很多,怎个的改动也很大.
最大的不同是同一个数据库不同的表不同的操作我只要一个statement. 但是用preparedstatement我就要每操作一次创建一个preparedstatement
展开