将String转换为Blob

时间:2014-09-05 06:32:06

标签: java jdbc

我是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 个答案:

答案 0 :(得分:1)

一些可能的问题:

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

对于NullPointerException ...你还没有说过发生异常的地方,但如果descnull,那就解释了它 - 考虑你想要你的blob包含什么在这种情况下(或者你是否应该将参数设置为null)。