[SQL Server] JDBCによるtext、ntext、imageの操作方法(その1) | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

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