文件类中定义内容 类型为 File可以吗

来源:6-2 综合练习---实现分析

阿非利加

2017-02-24 23:16

public class Files {
    private String file_id;
    private String file_name;
    private File file_details;

}

public class FileAction {
    
    public static void fileUpdata(Files srcFile) throws Exception{
        Connection conn =DBUtil.getDBConnection();
        if(!srcFile.getFile_details().exists()){
            throw new IllegalArgumentException("文件:"+srcFile.getFile_details()+"不存在");
        }
        if(!srcFile.getFile_details().isFile()){
            throw new IllegalArgumentException(srcFile.getFile_details()+"不是文件");
        }
        FileInputStream is = new FileInputStream(srcFile.getFile_details());
            String sql="" +"insert into files (file_name,file_details)  values(?,?) "+" ";
            PreparedStatement ptmt=conn.prepareStatement(sql);
            ptmt.setString(1, srcFile.getFile_name());
                
            ptmt.setBlob(2, is);;
            ptmt.execute();
            is.close();
    }
}

public static void main(String[] args) {
        
        UserAtion ation = new  UserAtion();
        FileAction  fileAtion = new FileAction();
        Users uu = new Users();
        Files ff= new Files();
        
        ff.setFile_name("ying");
        ff.setFile_details(new File("E:\\imooc\\test.doc"));
        
        try {
            fileAtion.fileUpdata(ff);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

这样写会有一个报错:

Exception in thread "main" java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBlob(ILjava/io/InputStream;)V is abstract
    at com.mysql.jdbc.PreparedStatement.setBlob(PreparedStatement.java)
    at imooc.combat.action.FileAction.fileUpdata(FileAction.java:29)
    at Test.Test.main(Test.java:27)

哪里有问题吗?


写回答 关注

1回答

  • 晓琪
    2017-02-27 00:15:41
    已采纳

    当数据库字段为blob类型时,必须使用PreparedStatement中的setBinaryStream(int,InputStream,int)方法;当数据库字段为longblob类型时,必须使用PreparedStatement中的setBinaryStream(int,InputStream,long)方法。

    阿非利加

    非常感谢!

    2017-03-03 16:27:50

    共 1 条回复 >

Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125013 学习 · 590 问题

查看课程

相似问题