Reputation: 373
I am trying to update a column named Body in my LetterTemplate table. But whenever I try to execute my query, the error shows : Inconsistent datatypes: expected NUMBER got BINARY
My code:
public static void UpdatData(OracleConnection connection, int mailId, byte[] sData)
{
OracleCommand command = new OracleCommand("UPDATE LetterTemplate SET " + "BODY = :BODY WHERE ID = :ID ", connection);
OracleParameter blobParameter = new OracleParameter();
blobParameter.OracleDbType = OracleDbType.Blob;
blobParameter.ParameterName = "BODY";
blobParameter.Value = sData;
OracleParameter mailIDParameter = new OracleParameter();
mailIDParameter.OracleDbType = OracleDbType.Int32;
mailIDParameter.ParameterName = "ID";
mailIDParameter.Value = mailId;
//command.Parameters.Add("ID", OracleDbType.Int32).Value = mailId;
//command.Parameters.Add("BODY", OracleDbType.Blob, sData.Length).Value = sData;
command.Parameters.Add(mailIDParameter);
command.Parameters.Add(blobParameter);
//connection.Open();
command.ExecuteNonQuery();
}
Upvotes: 1
Views: 260
Reputation: 36
By carefully observing your code, I found that the sequence of adding the parameters is different from the variable declared. As a result, it was trying to set mailIDParameter
to the Body, resulting in that error.
Try to swap the lines like this:
your code:
command.Parameters.Add(mailIDParameter);
command.Parameters.Add(blobParameter);
changed code:
command.Parameters.Add(blobParameter);
command.Parameters.Add(mailIDParameter);
Hope you problem is solved
Upvotes: 2