Java JDBC 关于 Blob 和 Clob,需要将一个文档文件上传到 MySQL 数据库。

3

我目前正在进行自己的实验,学习一些JDBC知识和如何将对象持久化到数据库中。现在我正在尝试将文档上传到数据库中。

我遇到了以下错误:

Exception in thread "main" java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setClob(ILjava/io/Reader;)V is abstract
    at com.mysql.jdbc.PreparedStatement.setClob(PreparedStatement.java)
    at dao.StudentDAO.uploadResume(StudentDAO.java:156)
    at controller.Test.main(Test.java:30)

我不知道为什么会出现这种情况,有人能帮我看看错误吗? 以下是部分代码:

// this is in my studentDAO class:

private static final String SQL_UPDATE_RESUME = 
        "UPDATE students
        SET resume = ? 
        WHERE socialSecNumber = ?";

public boolean uploadResume(Reader r) {
        PreparedStatement pst;
        //Reader file;

        try{
            pst = con.getConnection().prepareStatement(SQL_UPDATE_RESUME);
            //file = r;
            pst.setClob(1, r);
        }
        catch(SQLException e){
            System.out.println("Error when uploading the resume: " + e);
        }
        finally{
            con.closeConnection();
        }
        return true;
    }

public class Test {
public static void main(String[] args) {


    File file = new File("C:/Users/Carlos L/Desktop/Resume.docx");
    Reader r = null;
    try {
        r = new FileReader(file);
    } catch (FileNotFoundException e) {
        System.out.println("Error when locating the file: "+ e);
    }
    sdao.uploadResume(r);
}

}


很可能你的JDBC驱动程序不支持CLOB。请查看将大型对象类型对象添加到数据库,该文档创建了一个Clob对象而不是一个Reader - MadProgrammer
是的,我替换了驱动程序,然后它就正常工作了。文件现在已经上传到数据库中了,但是它不可读,我是通过php my admin来查看的,我正在使用XAMPP。 - Carlos Luis
1个回答

2

是的,你说得对,我下载了最新的驱动程序,现在它可以工作了。现在当我将其上传到数据库(我正在使用带有php我的管理员的XAMPP),所上传文档所在的列的内容是无法读取的,全都是无意义的数据。 - Carlos Luis
那听起来像是另一个问题。;-) - Andreas
我觉得今天我不能再问更多的问题了。 - Carlos Luis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接