有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将字符串转换为Blob

我对JDBC和堆栈溢出也是新手,我在这里尝试做的是:

我试图将字符串作为blob插入数据库,但遇到空指针异常。以下是我正在使用的代码:

public String execute() {
    String success="Success";
    try{
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://panorama-pc:3306/sample", "sample", "sample123");
        String sql = "Insert into users values(?,?,?,?,?)";
        PreparedStatement ps = con.prepareStatement(sql);
        ps.setNull(1, Types.NULL);  
        ps.setString(2,name);
        ps.setString(3,RollNo);
        ps.setString(4, date);

        Blob blob = con.createBlob();

        blob.setBytes(1,desc.getBytes()); // getting exception here 

        int i = ps.executeUpdate();
        if(i>0){
            return SUCCESS;
        }
        else{
            return ERROR;
        }
    }
    catch(SQLException | ClassNotFoundException e){
        e.printStackTrace();
    }       

这里desc是一个字符串,我试图将它插入blob列。有人能帮我吗


共 (1) 个答案

  1. # 1 楼答案

    一些可能的问题:

    • 不清楚为什么要将参数显式设置为null。为什么不在SQL中显式地指定列名(这样会更清楚)并省略该列/参数呢
    • 虽然您正在创建blob,但在语句中从未将其用作参数。你需要某处ps.setBlob(...)
    • String.getBytes的调用没有指定Charset;我强烈建议你这样做
    • 你不能关闭连接或声明。理想情况下,可以使用try with resources语句来实现

    对于NullPointerException。。。你没有说过异常发生的地方,但是如果{{CD5}}是^ {< CD6> },这将解释它-考虑你希望你的BLB在那个情况下包含什么(或者你是否应该将参数设置为NULL)。p>