这个问题已经在这里有一个答案:
- 为什么试图加载在一个数据库中的BLOB当我得到java.lang.AbstractMethodError? 14个回答
我有这个问题得到一个java.io.File
从挑选JFileChooser
与所述上传java.io.File
对象到MySQL为表此表结构
COL_NAME COL_TYPE ATTRIBUTES EXTRA
(PK) idSample int(10) UNSIGNED ZEROFILL AUTO_INCREMENT
FileName varchar(250)
FileBin blob BINARY
而从这个Java代码中, newConnection
方法,其中它返回一个DriverManager的默认上述MySQL数据库的新实例类的静态方法。 另一件事,我使用java.sql
包不是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;
}
当我试图运行程序,它返回导致错误statement.setBlob
有这个堆栈跟踪行:
Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBlob(ILjava/io/InputStream;J)V
我怎样才能解决这个问题呢?