问题描述
我有这个问题从选择 JFileChooser
中获取 java.io.File
来上传 java.io.File
具有此表结构的MySQL表的对象
I have this problem getting a java.io.File
from the selection of a JFileChooser
to upload the said java.io.File
object to the MySQL Table having this table structure
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
包。
And from this Java code, the newConnection
method is a static method of the class wherein it returns a new instance of a DriverManager default to the said MySQL Database. Another thing, I am using the java.sql
package not the com.mysql.jdbc
package.
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
有这个堆栈跟踪的行:
When I tried to run the program, it returns an error leading to the statement.setBlob
line having this stacktrace:
Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBlob(ILjava/io/InputStream;J)V
如何解决此问题?
推荐答案
AbstractMethodError
表示你的JDBC驱动程序的 PreparedStatement
s没有实现 setBlob(int,InputStream,long)
。
AbstractMethodError
means your JDBC driver's PreparedStatement
s don't implement setBlob(int, InputStream, long)
.
使用旧的 setBlob(int,Blob)
或更新你的驱动程序(Connector / J 5.1实现Jdbc 4.0,这应该是你的需要 setBlob(int,InputStream,long)
)
Use the older setBlob(int, Blob)
or update your driver (Connector/J 5.1 implements Jdbc 4.0, which should be what you need for setBlob(int, InputStream, long)
)
这篇关于Java文件上传到MySQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!