我正在尝试更新LetterTemplate表中名为Body的列。但每当我尝试执行查询时,错误就会显示:数据类型不一致:预期的NUMBER得到了二进制
我的代码:
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();
}
通过仔细观察您的代码,我发现添加参数的顺序与声明的变量不同。因此,它试图将mailIDParameter
设置为Body,导致了该错误。
试着像这样交换线路:
您的代码:
command.Parameters.Add(mailIDParameter);
command.Parameters.Add(blobParameter);
更改代码:
command.Parameters.Add(blobParameter);
command.Parameters.Add(mailIDParameter);
希望你的问题得到解决