1
  public void log(int materialId,string materialName, string action, string description, string datetime, double amount,string unit)
        {
            OleDbCommand insertIntoLog = new OleDbCommand();
            insertIntoLog.CommandText = "INSERT INTO NCCI_eventslog (materialId,materialName,action,description,date_time,amount,unit) Values (@materialId,@materialName,@action,@description,@date_time,@amount,@unit)";
            insertIntoLog.Connection = database;
            insertIntoLog.Parameters.AddWithValue("@materialId", materialId);
            insertIntoLog.Parameters.AddWithValue("@materialName", materialName);
            insertIntoLog.Parameters.AddWithValue("@action", action);
            insertIntoLog.Parameters.AddWithValue("@description", description);
            insertIntoLog.Parameters.AddWithValue("@date_time", datetime);
            insertIntoLog.Parameters.AddWithValue("@amount", amount);
            insertIntoLog.Parameters.AddWithValue("@unit", unit);

            if (database.State == ConnectionState.Open)
            {
                database.Close();
            }
            database.Open();
            insertIntoLog.ExecuteScalar();
        }

错误是:Insert Statement中的语法错误,我在Access Query SQL中复制了insert语句并且没有错误是什么问题?

4

4 回答 4

1

你需要使用

insertIntoLog.ExecuteNonQuery();

代替

insertIntoLog.ExecuteScalar();
于 2013-11-14T14:47:49.457 回答
1

OLEDB 提供程序不支持文本命令的命名参数 -?用于每个参数,然后按顺序将它们添加到命令

insertIntoLog.CommandText = "INSERT INTO NCCI_eventslog " + 
    "(materialId,materialName,action,description,date_time,amount,unit) " + 
    "Values (?,?,?,?,?,?,?)";
于 2013-11-14T14:59:41.703 回答
0

我可能是错的,所以我想请随意对我投反对票,但因为我认为到目前为止给出的任何“答案”都不正确,我想我不妨把它扔在那里,即使这个问题就像现在一岁了。

“单位”可能是保留关键字,或者其他关键字之一可能是关键字。所以我建议把它放在方括号里。因此,您的 INSERT 语句将如下所示:

insertIntoLog.CommandText = "INSERT INTO NCCI_eventslog (materialId,materialName,action,description,date_time,amount,[unit]) Values (@materialId,@materialName,@action,@description,@date_time,@amount,@unit)";

如果这不起作用,试着把其他的放在括号里,甚至全部放在括号里,我不认为把它们都放在括号里会伤害它。

我想您也可以尝试将格式更改为 D Stanley 建议的方式,但我从经验中知道您不必那样做。

于 2014-07-01T19:20:11.263 回答
0

检查您的日期时间字段可能是您的问题我觉得首先手动传递日期时间值'01/jan/2013'并检查

于 2013-11-14T14:51:39.597 回答