2013-11-27 4 views
0

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

package com.mysql.db.examples; 

import java.io.*; 
import java.sql.*; 

public class BlobInsertTest { 

    public static void main(String a[]){ 

    Connection con = null; 
    PreparedStatement ps = null; 
    InputStream is = null; 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     con = DriverManager. 
       getConnection("jdbc:mysql://localhost:3306/STUDENT_DB","root","sys"); 
     ps = con.prepareStatement("insert into STUDENT_PROFILE values (?,?)"); 
     ps.setInt(1, 101); 
     is = new FileInputStream(new File("D:\\supriyo_pic.JPG")); 
     ps.setBinaryStream(2, is); 
     ps.executeUpdate(); 

    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } finally{ 
     try{ 
      if(is != null) is.close(); 
      if(ps != null) ps.close(); 
      if(con != null) con.close(); 
     } catch(Exception ex){} 
    } 
} 
} 

Его показ:

Exception in thread "main" java.lang.AbstractMethodError: 
    com.mysql.jdbc.ServerPreparedStatement.setBinaryStream(ILjava/io/InputStream;)V 
    at com.mysql.db.examples.BlobInsertTest.main(BlobInsertTest.java:26) 
+1

магазин изображения путь вместо изображения .. – subash

+0

Что произойдет, если вы также обеспечивают третий необязательный параметр в метод setBinaryStream? 'is = new FileInputStream (новый файл (« D: \\ supriyo_pic.JPG »), (int) ps.length());' Я слышал, что могут быть проблемы с некоторыми драйверами jdbc, когда вы не даете третий параметр. – Schnodderbalken

+0

Что это за (int) ps.length()) ?? Я не мог получить ... – pinto

ответ

1

В зависимости от версии вашего драйвера JDBC для MySQL (это его JDBC 3 или 4 типа?) Вам необходимо установить различные параметры для метода setBinaryStream.

Подробная информация может быть найдена здесь: http://www.herongyang.com/JDBC/MySQL-BLOB-setBinaryStream.html

Таким образом, вы должны проверить с этим:

... 
File file = new File("D:\\supriyo_pic.JPG"); 
is = new FileInputStream(file); 
ps.setBinaryStream(2, is, (int)file.length()); 
... 
+0

спасибо, что это работает. – Braj

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