2009-04-21 9 views
0

Je vais essayer ceci pour insérer l'image pour Oracle DataBase - mais il ne fonctionne pasPourquoi ai-je une erreur ORA-00936 en essayant d'enregistrer une image dans Oracle?

(même code dans le travail du serveur Sql Excellents)

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

"Ça ne marche pas" est assez vague. Pourriez-vous donner le problème exact? Avez-vous une erreur, les données sont-elles complètement manquantes, incomplètes ou invalides? –

+0

Désolé, vous avez raison. L'erreur: ORA-00936 – Gold

Répondre

0

Comme vous le savez, ORA-00936 est une erreur d'expression manquante . Dans votre code de question, vous utilisez une variable de liaison dans votre instruction SQL. Dans Oracle, placeholder variable starts with a colon. Donc, où vous avez @p_pic le format correct est :@p_pic. L'utilisation de la perluète dans votre paramètre nommé est un serveur Microsoft SQL Server.

Questions connexes