- - PR -
Oracleのバイナリ型のフィールドにSQLでデータを追加したい
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-10-06 19:42
T_TESTテーブルにバイナリ型(RAW(100))のNAMEフィールドがあります。
SQL文で「太郎」というデータを追加したいのですが エンコードする方法が分かりません。 コードは以下のとおりです。 ご教授よろしくお願いします。 string data = "太郎"; string sql = "INSERT INTO T_TEST(NAME) VALUE('" + data + "')"; OracleConnection con = new OracleConnection(接続文字列); OracleCommand cmd = new OracleCommand(sql, con); int rtn = cmd.ExecuteNonQuery(); |
|
投稿日時: 2004-10-07 11:25
パラメータクエリーを作って、パラメータにバイト配列を指定すれば良いのではないですか?
エンコードはSystem.Text.Encoding辺りです。 |
|
投稿日時: 2004-10-07 13:48
こんなのはいかがでしょうか?
INSERT INTO T_TEST(NAME) VALUE(UTL_RAW.CAST_TO_RAW('太郎')); 取り出すときは、 SELECT UTL_RAW.CAST_TO_VARCHAR2(NAME) FROM T_TEST; |
|
投稿日時: 2004-10-12 13:58
まるく様、てっく様、ご返答ありがとうございました。
文字列をSystem.Text.Encodingでunicodeに変換して、 byte型の配列を取得し、 そのbyte型のデータよりToString("X")で16進数を取得し、 シングルクォーテーションで囲ってINSERTしたところ、 正常に追加されました。 UTL_RAW.CAST_TO_RAWという関数を使用すれば一発で 出来そうな感じですね。落ち着いたら差し替えてみます。 ありがとうございました。 |
1
