Javaからtext、ntext、image型のデータを操作する場合、Oracleのように特別なクラスやメソッドを使う必要はありません。
text、ntextであればgetString()でデータを読み込み、setString()メソッドでデータを書き込みます。
imageであればgetBytes()メソッドでデータを読み込み、setBytes()でデータを書き込みます。
各メソッドを用いたtext、ntext、imageの操作例(一部抜粋)を以下に示します。
getString()メソッドを利用したtextデータの読み込み
String textValue = null; PreparedStatement pstmt = conn.prepareStatement( "SELECT TEXT_VALUE FROM TABLEA WHERE ID = ?" ); pstmt.setInt( 1, 1 ); ResultSet rs = pstmt.executeQuery(); if( rs.next() ){ textValue = rs.getString( 1 ); }
setString()メソッドを利用したtextデータの書き込み
String textValue = ...; PreparedStatement pstmt = con.prepareStatement( "INSERT INTO TABLEA (TEXT_VALUE) VALUES( ? )" ); pstmt.setString( 1 , textValue ); pstmt.execute();
getBytes()メソッドを利用したimageデータの読み込み
Byte[] imageValue = null; PreparedStatement pstmt = conn.prepareStatement( "SELECT IMAGE_VALUE FROM TABLEA WHERE ID = ?" ); pstmt.setInt( 1, 1 ); ResultSet rs = pstmt.executeQuery(); if( rs.next() ){ imageValue = rs.getBytes( 1 ); }
setBytes()メソッドを利用したimageデータの書き込み
Byte[] imageValue = ...; PreparedStatement pstmt = con.prepareStatement( "INSERT INTO TABLEA (IMAGE_VALUE) VALUES( ? )" ); pstmt.setBytes( 1 , imageValue ); pstmt.execute();
ただし、上記の方法ではデータサイズが大きくなるにしたがってパフォーマンスが悪化します。
そのため、比較的データサイズが小さいものに限って利用するのが望ましいでしょう。
【関連エントリ】
[SQL Server] JDBCによるtext、ntext、imageの操作方法(その1) 2005/03/02
[SQL Server] JDBCによるtext、ntext、imageの操作方法(その2) 2005/03/03
[SQL Server] text型やimage型を読み込む際の最適なバッファサイズは? 2005/03/09
[SQL Server] imageデータをファイルから直接登録する方法 2005/03/15
[SQL Server] BULK INSERTステートメントによるデータのアップロード 2005/03/16
[SQL Server] imageデータをファイルに直接出力する。2005/03/17
[SQL Server] image型やtext型はテキストポインタを利用して取得したほうが速い 2005/08/04