2009-04-21 41 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

“它不工作”非常含糊。你能给出确切的问题吗?您是否收到错误,数据是否完全丢失,不完整或无效? – 2009-04-21 09:01:04

回答

0

如你所知,ORA-00936是缺少表达错误。在您的问题代码中,您在SQL语句中使用了一个绑定变量。在Oracle中,placeholder variable starts with a colon。因此,如果你有@p_pic正确的格式是:@p_pic

在命名参数中使用&符号是Microsoft SQL Server。

相关问题