如何向各种数据库中写入blob类型的记录

来源:互联网 发布:重装系统后没网络 编辑:程序博客网 时间:2024/05/19 22:28
 作者:Maverick
 blog:http://blog.csdn.net/zhaohuabing  转载请注明出处

一 对于mssql和sybase,方法很简单,采用statement.setBinaryStream方法就可以了

二 对Oracle的blob类型的字段,不能直接写入,有特殊的操作方法:
1、首先插入一个记录,该记录中blob字段为空
   String INSERT = "INSERT INTO test_table (id,name,details) VALUES (?,?,EMPTY_BLOB());
   statement = conn.prepareStatement(INSERT);
            statement.setInt(1, 1);
            statement.setShort(2, "mike");
            statement.executeUpdate();
2、更新该条记录,设置blob字段的值,注意需要先采用select .. for update 的形式将blob字段从数据库中取出来,然后为blob字段设置值,最后再用update语句更新
          byte[] detatils = new byte[1000];
   String GET_COND_SQL_ORACLE = "SELECT details FROM test_table WHERE id = ? FOR UPDATE";
           ps1 = con.prepareStatement(GET_COND_SQL_ORACLE);
           ps1.setInt(1, 1);
            rs1 = ps1.executeQuery();
            rs1.next();
            oracle.sql.BLOB blob = ((OracleResultSet) rs1).getBLOB(1);
            blob.putBytes(1, detatils );

            String UPDATE_COND_SQL_ORACLE = "update test_table SET details=?  WHERE id= ? ";
   ps2 = con.prepareStatement(UPDATE_COND_SQL_ORACLE);
            ps2.setBlob(1, blob);
            ps2.setInt(2, 1);
            ps2.executeUpdate();


原创粉丝点击