我有问题批量插入文件。我正在使用GWT从服务器端助手类保存mysql数据库中的多条记录。在那个助手类中,我有保存报告对象的多条记录的方法,这是我的域名class.Lets见下面的代码片段
while (iterator.hasNext()) {
Report report = (Report) iterator.next();
preparedStatment.setString(1, report.getTitle());
preparedStatment.setString(2, report.getReportAbstract());
preparedStatment.setString(3, report.getUrl());
preparedStatment.setDate(4,(java.sql.Date) report.getPublishDate());
preparedStatment.setString(5, report.getAuthor());
preparedStatment.setString(6, report.getPublisher());
preparedStatment.setDouble(7, report.getPrice());
preparedStatment.setString(8, report.getCurrency());
preparedStatment.setBoolean(9, report.isPurchase());
**preparedStatment.setBinaryStream(10, inpStream,(int)inputFile.length());**
preparedStatment.setString(11, report.getMimeType());
preparedStatment.setBoolean(12, report.isDownload());
preparedStatment.setLong(13, report.getReportSource());
preparedStatment.setDate(14, new java.sql.Date(date.getTime()));
preparedStatment.setBoolean(15, report.isDeleted());
preparedStatment.addBatch();
}
int[] updateCounts = preparedStatment.executeBatch();
connection.commit();
在上面的代码中,用于发送insert.I文件的粗体字体行循环并逐个插入记录。但它只插入数据库中第一条记录的文件,并保留字段为空的剩余记录,即没有文件插入但所有字段都正确插入。我坚持在这里为所有记录插入文件字段。 有人可以帮帮我吗?
答案 0 :(得分:0)
我不知道您的完整代码。您可以尝试以下代码,
File TryFile = new File("yourFileName.txt"); int TryFileLength = (int) TryFile.length(); InputStream TryStream = (InputStream) new FileInputStream(TryFile);
然后在Iterator中将下面的代码作为静态代码并让我们看看。如果它工作正常,那么pbm只与您的代码。检查Iterator之前的代码。
preparedStatment.setBinaryStream(10,TryStream,TryFileLength);
如果我错了,请纠正我。
答案 1 :(得分:0)
我为多个记录插入相同的文件,因此该文件只插入数据库中的第一条记录。例如,如果我试图在批量插入中插入5条记录,那么我需要提供5个不同的文件,因为每个文件实例我们需要传入FileIputStream构造函数。当我调试它并检查FileIputStream对象然后在no中看到一些id。和FD =一些没有。 present.I观察到,如果这个id和FD对每个文件都有不同的值,那么特定记录的每个文件都在Bulk insert中正确插入。谢谢你上面的重播..如果我在技术上错了我就错了...