【问题标题】:Inconsistent datatypes: expected NUMBER got BINARY while updating blob in Oracle不一致的数据类型:预期 NUMBER 在 Oracle 中更新 blob 时得到 BINARY
【发布时间】:2020-08-13 00:46:51
【问题描述】:

我正在尝试更新 LetterTemplate 表中名为 Body 的列。但是每当我尝试执行查询时,错误都会显示:不一致的数据类型:预期的数字得到了二进制

我的代码:

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();


}

【问题讨论】:

标签: c# oracle


【解决方案1】:

通过仔细观察你的代码,我发现添加参数的顺序与声明的变量不同。结果,它试图将 mailIDParameter 设置为 Body,导致该错误。

尝试像这样交换行:

你的代码:

command.Parameters.Add(mailIDParameter);
command.Parameters.Add(blobParameter);

更改代码:

command.Parameters.Add(blobParameter);
command.Parameters.Add(mailIDParameter);

希望你的问题得到解决

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 2021-09-08
    • 2019-05-04
    • 2017-04-21
    • 2018-10-30
    • 2017-11-26
    • 1970-01-01
    • 2019-08-25
    相关资源
    最近更新 更多