Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#和Parameters.AddWithValue在Acces DB中插入数据_C#_Ms Access_Parameters_Insert - Fatal编程技术网

使用C#和Parameters.AddWithValue在Acces DB中插入数据

使用C#和Parameters.AddWithValue在Acces DB中插入数据,c#,ms-access,parameters,insert,C#,Ms Access,Parameters,Insert,我尝试使用Parameters.AddWithValue在Acces数据库中插入一些数据 但结果是insert子句中有一个错误 private const string conString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data source= C:\Users\andres\" + @"Documents\synchro.accdb"; System.Data.OleDb.Ole

我尝试使用Parameters.AddWithValue在Acces数据库中插入一些数据 但结果是insert子句中有一个错误

private const string  conString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
            @"Data source= C:\Users\andres\" +
            @"Documents\synchro.accdb";
    System.Data.OleDb.OleDbConnection conn = new 
    System.Data.OleDb.OleDbConnection(conString);
    OleDbCommand cmd;



public void setData(string temperature, string humidity,int month,int day,int year,string session)
    {

        //SQL STMT
    const string sql = "INSERT INTO termohigrometer(temperature,humidity,month,day,year,session) VALUES(@TEMPERATURE,@HUMIDITY,@MONTH,@DAY,@YEAR,@SESSION)";
       cmd = new OleDbCommand(sql, conn);

        Console.Write("temperatura     "+temperature);
        cmd.Parameters.AddWithValue("@TEMPERATURE", temperature);
        cmd.Parameters.AddWithValue("@HUMIDITY", humidity);
        cmd.Parameters.AddWithValue("@MONTH", month);
        cmd.Parameters.AddWithValue("@DAY", day);
        cmd.Parameters.AddWithValue("@YEAR", year);
        cmd.Parameters.AddWithValue("@SESSION", session);

                   Console.Write("query  " +cmd.CommandText );
                try
        {
            conn.Open();
            if (cmd.ExecuteNonQuery() > 0)
            {

                MessageBox.Show(@"Successfully Inserted");
            }
            conn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            conn.Close();
        }
    }
这是cmd.CommandText的结果

INSERT INTO termohigrometer(temperature,humidity,month,day,year,session) 
VALUES(@TEMPERATURE,@HUMIDITY,@MONTH,@DAY,@YEAR,@SESSION)
这是异常消息

这些单词月、日、年、会话是MS访问的保留字。如果您有这些名称的字段,我强烈建议您将它们更改为其他名称。否则,您需要在它们周围放上方括号,以避免混淆Jet Sql引擎

const string sql = @"INSERT INTO termohigrometer
                  (temperature,humidity,[month],[day],[year],[session]) 
                  VALUES(@TEMPERATURE,@HUMIDITY,@MONTH,@DAY,@YEAR,@SESSION)";
还可以考虑将AddWithValue方法替换为更精确的Add方法,并使用参数的数据类型

 cmd.Parameters.Add("@TEMPERATURE", OleDbType.VarWChar).Value = temperature;
 ....
阅读这篇关于这种“方便”方法中的危险的众所周知的帖子。

编辑问题并显示异常详细信息。真是个家伙。能够毫无例外地发现问题。你值得投票