- - PR -
OracleClientを利用したBLOBの書込みがうまくいかない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-09-14 15:32
こんにちわ。
VSC#2003でADO.NETを利用してOracleへバイナリデータの保存をしようとしているのですが OLEDBだと成功しますがOracleClientを利用すると 「ORA-01036:変数の名前が無効です」とエラーが出てしまいます。 コードは以下のようになっています。 private void button7_Click(object sender, System.EventArgs e) { OracleConnection OraCON = new OracleConnection(); OracleCommand OraCMD = new OracleCommand(); OracleDataReader OraRS = null; FileStream FS = null; BinaryReader BR = null; string Fname= null; if(openFileDialog1.ShowDialog() == DialogResult.OK) { try { OraCON.ConnectionString="Data Source=ORCL;User ID =SCOTT;Password=TIGER"; OraCON.Open(); Fname = openFileDialog1.FileName; FS = new FileStream(Fname,FileMode.Open,FileAccess.Read); BR = new BinaryReader(FS); byte[] OBJ = BR.ReadBytes((int)FS.Length); OraCMD.Connection = OraCON; OraCMD.CommandText ="INSERT INTO T_BLOB(NO,OBJ) VALUES(?,?)"; OraCMD.Parameters.Add("@OBJ_NO",OleDbType.Integer).Value="2"; //★ココ OraCMD.Parameters.Add("@OBJ",OracleType.Blob,OBJ.Length).Value = OBJ; //OLEDBだとこれで成功します。 OraCMD.Parameters.Add("@OBJ",OleDbType.Binary,OBJ.Length).Value = OBJ; OraCMD.ExecuteNonQuery(); } catch(Exception ER) { MessageBox.Show(ER.Message); } finally { if(OraRS != null) { OraRS.Close(); } if(BR != null) { BR.Close(); } if(FS != null) { FS.Close(); } if(CON != null) { CON.Close(); } } } } http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconobtainingblobvaluesfromdatabase.asp のページを参考に書いてみました。 解決できる方法があれば教えて頂けないでしょうか?よろしくお願いします。 | ||||
|
投稿日時: 2004-09-15 14:00
OracleClientでは、パラメータドクエリに"?"は使えません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=5980&forum=7&start=0 | ||||
|
投稿日時: 2004-09-15 17:53
ありがとうございます、解決しました。 最初パラメータを@hogeにしてダメだったので?にしてみたんですが 原因としては@を使ったパラメータ名がいけなかったようで :hogeにすると無事出来ました。 |
1