2012-01-03 5 views
1

У меня проблема с массовой вставкой файла. Я сохраняю несколько записей в базе данных mysql с помощью GWT из вспомогательного класса на стороне сервера. В этом вспомогательном классе у меня есть метод для сохранения нескольких записей отчета объект, который является моим 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 перекручивания и вставляя по одному record.but это только вставить файл для первая запись в базе данных и для оставшейся записи это поле пустое, то есть без вставки файла, но все поля вставлены правильно. Я застрял здесь, чтобы вставить поле файла для всех записей. Может ли кто-нибудь помочь мне в этом?

+0

Не могли бы вы сделать свой вопрос четким. Что вы подразумеваете под **, но он вставляет только один файл для одной записи в базу данных, но все поля вставлены правильно **? – Arung

+0

, но он только вставляет файл для первой записи в базу данных и для оставшейся записи это поле пуст i.e нет вставки файла, но все поля вставлены правильно. –

ответ

0

Я не знаю вашего полного кода. Вы можете попробовать следующий код,

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

, а затем в Итератор просто поставить код ниже как статический и позволяет видеть. Если он работает нормально, то pbm только с кодом. Проверьте код перед Iterator.

подготовленныйStatment.setBinaryStream (10, TryStream, TryFileLength);

Поправьте меня, если я ошибаюсь ..

0

Я вставив тот же файл для нескольких записей, следовательно, этот файл вставки только для первой записи в database.For Например, если я пытаюсь вставить 5 запись в объемная вставка, тогда мне нужно предоставить 5 разных файлов, потому что каждый экземпляр файла нам нужно передать в конструкторе FileIputStream. когда я отлаживал его и проверял объект FileIputStream, тогда видел некоторый id в no. и FD = некоторые нет. Я заметил, что если этот id и этот FD имеют разные значения для каждого файла, то каждый файл для конкретной записи вставлен правильно в Bulk insert.Thank для вашего вышеупомянутого воспроизведения .. Корректируйте меня, если im технически неправильно ...