【问题标题】:Getting illegal variable name/number error when inserting using OracleCommand使用 OracleCommand 插入时出现非法变量名称/编号错误
【发布时间】:2013-06-20 08:35:26
【问题描述】:

当我尝试使用 C# 向表中插入记录时,出现以下错误,

Message = "ORA-01036: illegal variable name/number\n"
Source = "System.Data.OracleClient"
StackTrace = "   at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)\r\n   at System.Data.OracleClient.OracleParameterBinding.Bind(OciStatementHandle statementHandle, NativeBuffer parameterBuffer, OracleConnection connection, Bo...
TargetSite = {Void CheckError(System.Data.OracleClient.OciErrorHandle, Int32)}

我的代码:

Int32 intLogID = 0;
strSQL = "INSERT INTO log_data(log_id, response_msg) "
                                        + "VALUES(?, ?)";
OracleCommand cmd = new OracleCommand(strSQL, conn);
cmd.CommandText = strSQL;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("log_id", OracleType.Int32).Value = intLogID;
cmd.Parameters.Add("response_msg", OracleType.VarChar, 256).Value = strResMsg;
cmd.ExecuteNonQuery();

我的表结构:

LOG_ID          NOT NULL NUMBER(18) 
RESPONSE_MSG    VARCHAR2(256)

当我手动尝试使用时,我能够成功插入表格,

INSERT INTO log_data(log_id, response_msg)
values (1067365, 'test'); 

我什至尝试过int intLogID = 0;cmd.Parameters.Add("log_id", OracleType.Number).Value = intLogID;

还有Int32 与数字绑定组合和intInt32 绑定组合。

但仍然出现同样的错误。可能是什么问题?

【问题讨论】:

    标签: c# .net oracleclient oraclecommand


    【解决方案1】:

    我认为你的查询应该是

    "INSERT INTO log_data(log_id, response_msg) VALUES(:log_id,:response_msg)"
    

    因为您提供了这些特定参数,例如

    cmd.Parameters.Add("log_id", OracleType.Number).Value = intLogID;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-01
      • 2018-05-07
      • 1970-01-01
      • 2022-01-12
      • 2013-01-06
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多