2015-07-25 4 views
0

Я пытаюсь обновить изображение в базе данных после его выбора из jFilechooser через пользовательский интерфейс моего приложения, но у меня такая же ошибка: Синтаксическая ошибка рядом (BULK 'c /: .. ..... ', SINGLE_BLOB). Вот мой кодОшибка при обновлении данных blob

String str = F.getAbsolutePath(); 
String sql="UPDATE employés SET photo = 
     (SELECT BulkColumn FROM OPENROWSET(BULK '"+str+"', SINGLE_BLOB) AS x)"; 
+1

Какие СУБД вы используете? – Jens

+0

Я думаю, вы пытаетесь установить 'String data' в поле' blob'. – adatapost

+0

Blob ожидает поток байтов. Что вы сделали по ошибке, на самом деле может быть хорошим способом. Попробуйте изменить blob на string.Then вы можете получить доступ к путям из БД. –

ответ

0

Вы можете использовать этот код:

PreparedStatement pstmt = con.prepareStatement("UPDATE employés SET photo = ?"); // consider to use a WHERE clause for not to update ALL datasets 
FileInputStream inStream = new FileInputStream(F); 
pstmt.setBinaryStream(1, inStream); 
pstmt.executeUpdate(); 
inStream.close(); 

код похож на официальный сервер документации SQL в https://msdn.microsoft.com/de-de/library/ms378813%28v=SQL.110%29.aspx

+0

Вставка блоба в базу данных не зависит от базы данных. JDBC определяет ряд конкретных API-интерфейсов для этого, и JDBC-драйверы баз данных, у которых есть blob, должны реализовывать (большинство из них) и обрабатывать/скрывать специфику базы данных. –

+0

@slartidan спасибо, теперь он отлично работает – Sam

+0

@Sam Добро пожаловать. Если вы захотите, вы также можете отметить мой ответ как принятый или отменить его. – slartidan

Смежные вопросы