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になるようにすること。