急啊,各位老大,帮帮忙 !!
主要代码如下:
我更新数据库image类型字段,当数据库有一条合乎要求的数据更新时,没有问题,它会把对应的图片插入对应的记录,但是当有两条合乎要求的记录要更新时,它就会把第二张图片都插入到要更新的两条记录的字段,即是它把本该插入第二条记录的图片都插入到两条要更新的数据里面了.请教各位,是什么原因.急,搞了很多天了.
问题:
while(dbi.rsNext()) { // *
log( "相片的处理 存在本地完毕 ") ;
i++ ;
String imagename= " " ;
if(i%2==0)
imagename= "d:/test.jpg " ;
else
imagename= "d:/test2.jpg " ;
log( "imagename : "+imagename) ;
// InputStream in1 = dbi1.rsGetBinaryStream( "C1101 "); //照片
//InputStream in1 = dbi.rsGetBinaryStream( "C1101 "); // 照片
in1 = dbi.rsGetBinaryStream( "C1101 "); // 照片
try {
//com.ionglobal.fms.FileManager.saveFile(in1, "d:/test.jpg "); // 把大字段内容保存到文件
com.ionglobal.fms.FileManager.saveFile(in1,imagename); // 把大字段内容保存到文件
} catch (Exception E) {
System.out.println(E.getMessage());
}
log( "相片的处理存在本地完毕 ") ;
log( "更新照片字段 注当显示 相片大小: 时才更新有效 ");
String sqlimageupdate = " ";
sqlimageupdate= "update student..A01 set student..A01.A0119=? where student..A01.A0101= ' "+ name + " ' and student..A01.AGB006= ' " + id + " ' ";
log( "sqlimageupdate : "+sqlimageupdate) ;
try {
PreparedStatement p_stmt = dbi.getPreparedStatement(sqlimageupdate);
// p_stmt.setInt(1,2); //设置字段iID 为1
//File file = new File( "d:/test.jpg ");
File file = new File(imagename);
log( "imagename : "+imagename) ;
if (file.length() > 0.0) {
log( "相片大小 : " + file.length());
InputStream in = new FileInputStream(file);
p_stmt.setBinaryStream(1,in,new Long(file.length()).intValue()); // 设置字段bFile
p_stmt.execute();
in.close();
p_stmt.close();
}
} catch (Exception e) {
e.printStackTrace();
}
log( " 更新照片字段完毕 ");
}
dbi.rsClose();
------解决方案--------------------
菜鸟 帮不上忙
------解决方案--------------------
你生成2条sql语句,然后用事务提交