2009-04-21 1 views
0

私は、Oracleデータベースに画像を挿入するために、これをみます - しかし、それはOracleで画像を保存しようとしたときにORA-00936エラーが表示されるのはなぜですか?

動作しない(で同じコードをSQL Serverの作業の優れた)

string sampleImage = PicNativ; 
BinaryReader sampleBR = null; 
FileStream sampleFS = null; 
OracleConnection sampleConnection = null; 
OracleCommand sampleCommand = null; 
FileInfo sampleFI = null; 
byte[] sampleArr = null; 
try 
{ 
    if (EDIT_M == 1) 
     Oracle = "update Sex set Name = '" + txtC.Text.Trim() + 
      "',pic = @p_pic where ID like '" + txtC4.Text.Trim() + "'"; 
    else 
     Oracle = "insert into Sex (Id,Code,Name,pic) values "+ 
      "(Sex_Code.nextval,'" + txtA.Text.Trim() + "','" + 
      txtC.Text.Trim() + "', @p_pic)"; 
    sampleFI = new FileInfo(sampleImage); 
    sampleFS = new FileStream(sampleImage, FileMode.Open, FileAccess.Read); 
    sampleBR = new BinaryReader(sampleFS); 
    sampleArr = sampleBR.ReadBytes((int)sampleFI.Length); 
    using (sampleConnection = new OracleConnection(Conect)) 
    { 
     sampleConnection.Open(); 
     using (sampleCommand = new OracleCommand()) 
     { 
      sampleCommand.Connection = sampleConnection; 
      sampleCommand.CommandText = Oracle; 
      sampleCommand.Parameters. 
       Add("@p_pic", OracleDbType.Blob).Value = sampleArr; 
      sampleCommand.ExecuteNonQuery(); 
     } 
    } 
} 
finally 
{ 
    sampleBR.Close(); 
    sampleFS.Close(); 
} 
+1

「うまくいきません」はかなり曖昧です。正確な問題を教えてください。エラーが発生していますか?データが完全に不足していますか、不完全であるか、無効ですか? –

+0

申し訳ありません、あなたは正しいです。エラー:ORA-00936 – Gold

答えて

0

ご存知のように、ORA-00936が欠落している表現の誤差があります。あなたの質問コードでは、あなたのSQLステートメントでバインド変数を使用しています。 Oracleの場合、placeholder variable starts with a colon。だからどこに@p_pic正しい形式は:@p_picです。

名前付きパラメータでアンパサンドを使用することは、Microsoft SQL Serverです。

関連する問題