使用C#和Parameters.AddWithValue在Acces DB中插入数据
我尝试使用Parameters.AddWithValue在Acces数据库中插入一些数据 但结果是insert子句中有一个错误使用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
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;
....
阅读这篇关于这种“方便”方法中的危险的众所周知的帖子。编辑问题并显示异常详细信息。真是个家伙。能够毫无例外地发现问题。你值得投票