批量插入文件字段

时间:2012-01-03 06:55:58

标签: mysql gwt jdbc

我有问题批量插入文件。我正在使用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文件的粗体字体行循环并逐个插入记录。但它只插入数据库中第一条记录的文件,并保留字段为空的剩余记录,即没有文件插入但所有字段都正确插入。我坚持在这里为所有记录插入文件字段。       有人可以帮帮我吗?

2 个答案:

答案 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中正确插入。谢谢你上面的重播..如果我在技术上错了我就错了...