sql >> データベース >  >> RDS >> Oracle

Java:OracleからBlobを読み取る

    InputStreamオブジェクトは、ResultSet.getBinaryStream()を介して取得できます。 メソッド。

    PreparedStatement prepareStatement = con.prepareStatement("select * from SMD_DATESTREEMAP");
    ResultSet rs=prepareStatement.executeQuery();
          
    while(rs.next())
    {
       oracle.jdbc.driver.OracleBlobInputStream bos = (oracle.jdbc.driver.OracleBlobInputStream) rs.getBinaryStream(2) ;
           
       ObjectInputStream out = new ObjectInputStream(bos);
          
       map = (TreeMap<DateTime, Integer>) out.readObject();
       ...
    }
    

    バイナリストリームの代わりにバイト配列を書くことができます。

    ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
    ObjectOutputStream out = new ObjectOutputStream(bos);
    out.writeObject(map);
    out.flush();
    out.close();
    byte[] buf = bos.toByteArray();
          
    PreparedStatement prepareStatement = con.prepareStatement("INSERT INTO SMD_DATESTREEMAP VALUES(?,?)");
    prepareStatement.setInt(1, 1);
    prepareStatement.setBytes(2, buf);
    prepareStatement.executeUpdate();
    prepareStatement.close();
    

    バイト配列を読み取ります:

    while(rs.next())
    { 
        byte []buf=rs.getBytes(2);
        ByteArrayInputStream bos=new ByteArrayInputStream(buf);
        ObjectInputStream out = new ObjectInputStream(bos);
        map=(TreeMap<DateTime, Integer>)out.readObject();
        ..
    }
    


    1. SQLServerデータベースパフォーマンス監視プラットフォームが提供する必要のある上位5つの機能

    2. PostgreSQLでSequelgemを使用して配列を挿入する

    3. カンマ区切りの値に基づいてテーブルを結合する

    4. ExcelVBAを使用してSQLクエリを実行する