- PR -

Oracleのバイナリ型のフィールドにSQLでデータを追加したい

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 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/01/09
投稿数: 181
投稿日時: 2004-10-07 11:25
パラメータクエリーを作って、パラメータにバイト配列を指定すれば良いのではないですか?
エンコードはSystem.Text.Encoding辺りです。
てっく
常連さん
会議室デビュー日: 2002/11/05
投稿数: 28
投稿日時: 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/08/26
投稿数: 34
投稿日時: 2004-10-12 13:58
まるく様、てっく様、ご返答ありがとうございました。
文字列をSystem.Text.Encodingでunicodeに変換して、
byte型の配列を取得し、
そのbyte型のデータよりToString("X")で16進数を取得し、
シングルクォーテーションで囲ってINSERTしたところ、
正常に追加されました。
UTL_RAW.CAST_TO_RAWという関数を使用すれば一発で
出来そうな感じですね。落ち着いたら差し替えてみます。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)