数据类型不一致:在Oracle中更新blob时,预期的NUMBER得到了BINARY



我正在尝试更新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);

希望你的问题得到解决

相关内容

最新更新