2012-01-03 17 views
1

ファイルの一括挿入に問題があります。サーバーサイドヘルパークラスからGWTを使用して複数のレコードをmysqlデータベースに保存しています。そのヘルパークラスでは、レポートの複数のレコードを保存する方法がありますそれだけのためにファイルを挿入record.but私のドメインclass.Letsを1つずつループして挿入insert.I用のファイルを送信するためファイルフィールドのバルク挿入

上記のコードで
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(); 

、太字の行以下のコードを参照してくださいされているオブジェクトデータベースの最初のレコードと残りのレコードのフィールドは空です。すなわち、ファイルの挿入はありませんが、すべてのフィールドが正しく挿入されています。すべてのレコードのファイルフィールドを挿入するためにここに張り付いています。 誰でもこのことを教えてもらえますか?

+0

あなたは質問をはっきりさせることができますか?**は何を意味しますか?それはデータベース内の1つのレコードに対して1つのファイルしか挿入しませんが、すべてのフィールドが正しく挿入されていますか? – Arung

+0

しかし、データベースの最初のレコードのファイルのみを挿入し、残りのレコードはそのフィールドが空である、つまりファイルが挿入されていないが、すべてのフィールドが正しく挿入されている。 –

答えて

0

あなたのフルコードはわかりません。あなただけの静的なものとして、以下のコードを入れて見ることができます。イテレータで

File TryFile = new File("yourFileName.txt"); 
int TryFileLength = (int) TryFile.length(); 
InputStream TryStream = (InputStream) new FileInputStream(TryFile); 

し、その後、次のコードを試すことができますそれがうまくいけば、あなたのコードだけでpbm。イテレータの前にコードをチェックしてください。

preparedStatment.setBinaryStream(10、TryStream、TryFileLength);私が間違っている場合

は私を修正..

0

私は5レコードを挿入しようとしていた場合、私は、それゆえdatabase.For例では最初のレコードだけのために、そのファイルの挿入を複数のレコードの同じファイルを挿入しています私は5つの異なるファイルを提供する必要があるため、私たちはFileIputStreamコンストラクタで渡す必要がある各ファイルのインスタンス。私がそれをデバッグして、FileIputStreamオブジェクトを調べると、noのいくつかのidが見えました。 FD =何もない。私は、このIDとFDが各ファイルごとに異なる値を持つ場合、特定のレコードの各ファイルがバルクインサートに正しく挿入されていることを確認しました。上記の再生のためにあなたにお礼を言います...

関連する問題