- PR -

OracleClientを利用したBLOBの書込みがうまくいかない

1
投稿者投稿内容
js
常連さん
会議室デビュー日: 2004/09/14
投稿数: 47
投稿日時: 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/01/09
投稿数: 181
投稿日時: 2004-09-15 14:00
OracleClientでは、パラメータドクエリに"?"は使えません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=5980&forum=7&start=0
js
常連さん
会議室デビュー日: 2004/09/14
投稿数: 47
投稿日時: 2004-09-15 17:53
引用:

まるくさんの書き込み (2004-09-15 14:00) より:
OracleClientでは、パラメータドクエリに"?"は使えません。



ありがとうございます、解決しました。
最初パラメータを@hogeにしてダメだったので?にしてみたんですが
原因としては@を使ったパラメータ名がいけなかったようで
:hogeにすると無事出来ました。
1

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