我有这个问题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
method 是该类的静态方法,其中它将默认的 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
我该如何解决这个问题?
AbstractMethodError
表示您的 JDBC 驱动程序PreparedStatement
不执行setBlob(int, InputStream, long)
.
使用较旧的setBlob(int, Blob)
或更新您的驱动程序(Connector/J 5.1 实现了 Jdbc 4.0,这应该是您所需要的setBlob(int, InputStream, long)
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)