Java文件上传到MySQL [复制](Java File upload to MySQL [dup

2019-07-04 20:15发布

这个问题已经在这里有一个答案:

  • 为什么试图加载在一个数据库中的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

我怎样才能解决这个问题呢?

Answer 1:

AbstractMethodError意味着你的JDBC驱动程序的PreparedStatement ■不要执行setBlob(int, InputStream, long)

使用旧setBlob(int, Blob)或更新驱动程序(连接器/ J 5.1实现JDBC 4.0,这应该是你需要什么setBlob(int, InputStream, long)



文章来源: Java File upload to MySQL [duplicate]