Получение недопустимой ошибки имени / номера переменной при вставке с использованием OracleCommand

Когда я пытаюсь вставить запись в таблицу, используя 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 с комбинацией номеров и int с Int32 связующие комбинации.

Но все равно получаю ту же ошибку. В чем может быть проблема?

1 ответ

Решение

Я думаю, что вы должны иметь свой запрос как

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

Потому что вы предоставляете эти конкретные параметры, такие как

cmd.Parameters.Add("log_id", OracleType.Number).Value = intLogID;
Другие вопросы по тегам