目次へ

4.3. CLOBの書き込み

CLOBの書き込みもBLOBと同じく「PreparedStatement」を利用するのが便利です。「setAsciiStream」または「setCharacterStream」を使用します。「setAsciiStream」の使用法はBLOBの「setBinaryStream」と全く同じです。
この節では、以下のテーブルを使用します。

product_introductionテーブル

p_num int references product(p_num) primary key
introduction text
 connection.setAutoCommit(false);
     
     String sql='insert into product_introduction values(?,?)';
 PreparedStatement statement=connection.prepareStatement(sql);
 
 statement.setInt(1,104);
 File file=new File("/tmp/index.html");
 FileInputStream input=new FileInputStream(file);
 statement.setAsciiStream(2,input,(int)file.length());
statement.executeUpdate();
connection.commit();

「setCharacterStream」は何らかの文字列データがアプリケーションにあり、それをデータベースに記憶したい場合に使用します。「text」はStringオブジェクトで、何らかのテキストデータが入っているとします。

 statement.setInt(1,104);
 StringReader reader=new StringReader(text);
 statement.setCharacterStream(2,reader,text.length());
 statement.executeUpdate();
connection.commit();

8行目の「setCharacterStream」の3つ目の引数は、「文字数」である点に注意してください。

「setAsciiStream」と「setCharacterStream」の違いは、前者は文字データをASCIIコードと解釈して格納を行います。ASCIIコード以外の文字データを格納する場合には、後者を使用するようにしましょう。

(実習課題3)

以下のプログラムを作成しなさい。

  • 「product_introduction」にホームページデータを格納するコンソールプログラム。
  • プログラムの引数は1番目が製品番号、2番目がHTMLファイル。
  • 保存対象は1枚のHTMLファイルだけでよい。
  • 保存される文字コードはEUCになるようにすること。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ