chenj8211 2010-01-15 09:39
浏览 208
已采纳

spring 和hibernate怎样操作blob字段

现在又一个应用场景,前台数据操作数据我以HashMap保存起来然后存入数据库中的blob字段,现在怎样在把它取出来放到一个map中
[b]问题补充:[/b]
请问有没有spring结合hibernate操作的 ,看了一些网上的配置都有错误,多谢大侠们的解答

  • 写回答

3条回答 默认 最新

  • CaiHuajiang 2010-01-15 09:45
    关注

    [code="java"] //测试用HashMap

    HashMap staff=new HashMap();

    staff.put("001","true");

    staff.put("002","false");

    staff.put("003","false");

    import oracle.sql.*;//oracle提供的JDBC包

    //写入oracle数据库

    Connection con=dbConn.getConnection();

    con.setAutoCommit(false);

    Statement st=con.createStatement();

    //关键!!之所以用了这么长时间就是因为没有对BLOB字段初始化!

    //插入新的数据时一定要使用EMPTY_BLOB()对BLOB字段初始化!!!

    st.executeUpdate("UPDATE TABLE_NAME SET BLOB_VALUE=EMPTY_BLOB() WHERE ID=10");

    ResultSet rs = st.executeQuery(

    "SELECT BLOB_VALUE " +

    "FROM TABLE_NAME " +

    "WHERE id = 10 FOR UPDATE"

    );

    rs.next();

          BLOB   myBlob   =(BLOB)   rs.getObject("BLOB_VALUE");  
    
          ObjectOutputStream   oos=new   ObjectOutputStream(myBlob.getBinaryOutputStream());  
    
          oos.writeObject(staff);  
    
          oos.flush();  
          st.execute("commit");  
          ……  
    

    //从oracle数据库中读出

    Connection con=dbConn.getConnection();

    Statement st=con.createStatement();

    ResultSet rs2 = st.executeQuery(

    "SELECT BLOB_VALUE " +

    "FROM TABLE_NAME " +

    "WHERE id = 10"

    );

    rs2.next();

          BLOB   blob   =(BLOB)   rs.getObject("BLOB_VALUE");  
    

    ObjectInputStream ois=new ObjectInputStream(blob.getBinaryStream());

    HashMap h1=(HashMap) ois.readObject();

    String s1=(String) h1.get("001");

    system.out.println(s1);//打印出“true”

    ois.close();[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?