关于在java中保存image类型的字段的问题

有一个表test,其字段image是image类型的.在java中可以用如下的方法保存:Filefile=newFile("src/down.gif");InputStr... 有一个表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
展开
 我来答
jiji19jly
2008-08-20 · TA获得超过148个赞
知道答主
回答量:87
采纳率:0%
帮助的人:121万
展开全部
觉得还是要用PreparedStatement。觉得你的方向不对了,你反编译setBinaryStream的代码看看吧。

可以说说 你为什么一定要用Statement而就是不用PreparedStatement吗?

难道用PreparedStatement就不能动态生成SQL吗?不明白有什么不同。

"最大的不同是同一个数据库不同的表不同的操作我只要一个statement. 但是用preparedstatement我就要每操作一次创建一个preparedstatement"

我不明白你是怎么做的。我觉得statement可以做的事情preparedstatement同样可以,或者你把你的代码贴出来。
racnow
2008-08-15 · 超过36用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:0
展开全部
楼上正解,inputstream处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式