2012-12-09 11 views
6

mam ten problem z dostaniem java.io.File od wyborze JFileChooser przesłać wspomnianą java.io.File obiektu do tabeli MySQL Mając to struktura tabeliJava wysyłania pliku do MySQL

 COL_NAME COL_TYPE  ATTRIBUTES  EXTRA 
(PK) idSample int(10)  UNSIGNED ZEROFILL AUTO_INCREMENT 
    FileName varchar(250) 
    FileBin blob   BINARY 

iz tego kodu Java, newConnection Metoda jest statyczną metodą klasy, w której zwraca nową instancję domyślną DriverManager do wspomnianej bazy danych MySQL. Kolejna rzecz, używam pakietu java.sql, a nie pakietu com.mysql.jdbc.

public static boolean insert(final String filename, File file) throws SQLException, IOException { 
    boolean flag = false; 
    try { 
     Connection connection = newConnection(); 
     PreparedStatement statement = connection.prepareStatement(SQL_INSERT); 
     statement.setString(1, filename); 
     statement.setBlob(2, new FileInputStream(file), file.length()); 
     flag = statement.executeUpdate() > 0; 
     statement.close(); 
     connection.close(); 
    } catch (SQLException ex) { 
     throw ex; 
    } catch (IOException ex) { 
     throw ex; 
    } 
    return flag; 
} 

Kiedy próbowałem uruchomić program, to zwraca błąd prowadzący do linii statement.setBlob posiadającego tę StackTrace:

Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBlob(ILjava/io/InputStream;J)V 

Jak mogę rozwiązać ten problem?

+0

Czy próbowałeś za pomocą SetBinaryStream zamiast SetBlob? http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#setBinaryStream(int, java.io.InputStream) –

+0

Nadal zwraca ten sam wyjątek. –

+0

Wyjątkiem jest informowanie, że ostatni parametr to długi (J). Spróbuj przesłać plik. Length do int: ...., (int) file.length()); –

Odpowiedz

2

AbstractMethodError oznacza, że ​​sterownik JDBC PreparedStatement s nie wykonuje setBlob(int, InputStream, long).

Użyj starszego setBlob(int, Blob) lub zaktualizować sterownik (Connector/J 5,1 wdraża JDBC 4.0, który powinien być, co jest potrzebne do setBlob(int, InputStream, long))

Powiązane problemy