java.lang.AbstractMethodError

来源:互联网 发布:手机芯片性能测试软件 编辑:程序博客网 时间:2024/05/17 22:15

今天在向mysql数据库中写入大文本时遇到了一个bug
Exception in thread “main” java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setCharacterStream(ILjava/io/InputStream;J)V is abstract
at com.mysql.jdbc.PreparedStatement.setBlob(PreparedStatement.java)
下面贴上源码

    Connection connection = DBUtils.getConn();            String  sql = "insert into des values(?,?)";            PreparedStatement ps = connection.prepareStatement(sql);            ps.setString(1, UUID.randomUUID().toString());            File file = new File("f://test.txt");            Reader reader = new FileReader(file);            ps.setCharacterStream(2, reader, file.length());//          FileInputStream in=new FileInputStream(file);//          ps.setBinaryStream(2,in,file.length());            ps.executeUpdate();

折腾许久,终于明白原来是数据库驱动未更新,mysql的jar中没有ps.setBinaryStream(int,InputStream,long)的方法(只有最后一个参数为int的),而sql包有long的,file.length也是long型,所以编译不报错,运行报错。
知道原因就很好解决了,只需要加一个强转
ps.setCharacterStream(2, reader, (int)file.length());就ok啦,当然更新mysql驱动也是一个办法,不过笔者有点懒没去试,据说最新版的是可以支持的,看官们试试呗

0 0
原创粉丝点击