- - PR -
OracleのLONG RAWタイプカラムにバイナリデータを保存したい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-03-10 17:56
お世話になります。ももだいと申します。
今回、社内のサーバーにExcelファイルなどを保存し 複数人でファイルを共有するシステムを構築することになりました。 仕様の問題から、OracleのLONG RAWタイプのカラムに データを保存しようという話になったのですが、 OracleClientを使えば出来そう・・・までで、実際のデータの insertの方法が全くわかりません。 Webを探し回ったのですが、OracleClientを使った方法が 見つかりませんでした。 ご存知の方、いらっしゃいませんでしょうか? 何卒よろしくお願い致します。 ・開発環境 言語: VisualStudio.NET 2003 Enterprise Architect C# + ASP.NET OS: WindowsXP Professional(SP1) ・サーバー環境 OS: Windows Server 2003 Enterprise DB: Oracle 8.00.05 | ||||||||
|
投稿日時: 2004-03-10 18:47
「Oracle Data Provider for .NET 」
を使えばいいんじゃないですか? 使ったこと無いんで詳しくは知りませんが。 ただし、Oracleクライアントは9.2以上が必要ですが。 (サーバは8.0以上でいいらしい・・・) 詳しくは http://otn.oracle.co.jp あたりで調べてください。 [ メッセージ編集済み 編集者: Cluster 編集日時 2004-03-10 18:48 ] | ||||||||
|
投稿日時: 2004-03-10 19:01
Clusterさん
御返事ありがとうございました。 「Oracle Data Provider for .NET 」 ですが 開発環境のOracleクライアントは8.0.5ですので 対象外ということですね・・・ 残念です。 従来のOLE DB ProviderではBLOB型は扱うことが 出来ないのでしょうか? よろしくお願い致します。 | ||||||||
|
投稿日時: 2004-03-10 20:01
ももだいさん、こんばんは。
出来ます。 以下のサンプルで動作確認できました。 # VB.NET です。申し訳ない。
【追記】 ちなみに、Parameters.Add で "F1" とか "F2" とかパラメータ名を指定してますが、「.NET Framework Data Provider for OLE DB」では名前付きのパラメータは使用出来ないので、便宜上、こうしているだけです。 [ メッセージ編集済み 編集者: きくちゃん 編集日時 2004-03-10 20:08 ] | ||||||||
|
投稿日時: 2004-03-11 16:47
きくちゃんさん
お返事ありがとうございました。 教えて頂いたコードで希望通りの動作を実現することが出来ました!! ありがとうございました!! 以下が検証に使ったコードです。 超大急ぎで作ったのでとても汚くて見難いですがご勘弁ください。 // BLOB型データインサートテスト OleDbTransaction trnFs01; OleDbConnection conFs01; OleDbCommand cmdFs01; // バイト配列準備 byte [] buff = new byte[3]; // とりあえず3byteのダミーデータを準備する buff[0] = 0x30; buff[1] = 0x33; buff[2] = 0x35; conFs01 = new OleDbConnection(); cmdFs01 = new OleDbCommand(); conFs01.ConnectionString = "Provider=MSDAORA.1;User ID=test;Data Source=test;Password=test"; // DB接続開始 conFs01.Open(); // トランザクション制御開始 trnFs01 = conFs01.BeginTransaction(); cmdFs01.Transaction = trnFs01; cmdFs01.Connection = conFs01; // insert文生成 cmdFs01.CommandText = "insert into p_momodai_blobtest(item_name, file_name, file_data) values(?,?,?)"; // パラメータマーカーにデータをセット cmdFs01.Parameters.Add("item_name", OleDbType.VarChar, 20, "item_name").Value = "aaa"; cmdFs01.Parameters.Add("file_name", OleDbType.VarChar, 30, "file_name").Value = "bbb"; cmdFs01.Parameters.Add("file_data", OleDbType.LongVarBinary).Value = buff; // クエリ実行 cmdFs01.ExecuteNonQuery(); // コミット! trnFs01.Commit(); // DB接続終了 conFs01.Close(); 他の助言をいただいた皆様にも感謝いたします。 ありがとうございました。 |
1