Java文件上传到MySQL
我有这个问题从选择JFileChooser
获取java.io.File
上传所述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
行有这个stacktrace:
Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBlob(ILjava/io/InputStream;J)V
我该如何解决这个问题?
AbstractMethodError
意味着您的JDBC驱动程序的PreparedStatement
不实现setBlob(int, InputStream, long)
。
使用旧的setBlob(int, Blob)
或更新驱动程序(Connector / J 5.1实现Jdbc 4.0,这应该是setBlob(int, InputStream, long)
所需要的setBlob(int, InputStream, long)
)