Массовая вставка для поля файла - PullRequest
1 голос
/ 03 января 2012

У меня проблема с массовой вставкой файла. Я сохраняю несколько записей в базе данных 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();

В приведенном выше коде строка жирным шрифтом для отправки файла для вставки. Я зацикливаю и вставляю одну за другой запись. Но это только вставка файла для первой записи в базе данных и для оставшейся записи, это поле пустое, т.е. нет вставки файла но все поля вставлены правильно. Я застрял здесь для вставки поля файла для всей записи. Кто-нибудь может помочь мне в этом?

Ответы [ 2 ]

0 голосов
/ 05 января 2012

Я вставляю один и тот же файл для нескольких записей, следовательно, этот файл вставляется только для первой записи в базе данных. Например, если я пытаюсь вставить 5 записей в массовую вставку, то мне нужно предоставить 5 разных файлов, потому что каждый экземпляр файла мы нужно передать в конструктор FileIputStream. когда я отлаживал его и проверял объект FileIputStream, то видел некоторый идентификатор в no. и FD = некоторые нет. Настоящий. Я заметил, что если этот идентификатор и этот FD имеют разные значения для каждого файла, то каждый файл для конкретной записи вставлен правильно в массовую вставку. Спасибо за ваш повтор воспроизведения .. Исправьте меня, если я технически неправ ...

0 голосов
/ 03 января 2012

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

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

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

prepareStatment.setBinaryStream (10, TryStream, TryFileLength);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...