C#和ms数据库-条件表达式中的数据类型不匹配
我正在构建一个应用程序,当我按下按钮时,操作需要保存在Microsoft Access数据库中,但当我按下按钮时,代码的下一部分会出现错误“条件表达式中的数据类型不匹配”C#和ms数据库-条件表达式中的数据类型不匹配,c#,database,ms-access,C#,Database,Ms Access,我正在构建一个应用程序,当我按下按钮时,操作需要保存在Microsoft Access数据库中,但当我按下按钮时,代码的下一部分会出现错误“条件表达式中的数据类型不匹配” string dbconnection = "Provider=Microsoft.ACE.OLEDB.12.0;" + @"data source =ElevatorLog.accdb"; string dbcommand = "insert into [Elevator] ([MovingA
string dbconnection = "Provider=Microsoft.ACE.OLEDB.12.0;" + @"data source =ElevatorLog.accdb";
string dbcommand = "insert into [Elevator] ([MovingAction],[TimeAction]) values (@movingaction, @timeaction)";
string timeaction = DateTime.Now.ToShortDateString();
listBox1.Items.Add(movingaction + "\t\t" + timeaction + "\t\t");
OleDbConnection conn_db = new OleDbConnection(dbconnection);
OleDbCommand comm_insert = new OleDbCommand(dbcommand, conn_db);
OleDbDataAdapter adapter_insert = new OleDbDataAdapter(comm_insert);
comm_insert.Parameters.AddWithValue("@timeaction", timeaction);
comm_insert.Parameters.AddWithValue("@movingaction", movingaction);
conn_db.Open();
comm_insert.ExecuteNonQuery();
conn_db.Close();
我不知道您的数据类型是什么,但部分是根据代码猜测的:
string dbconnection = "Provider=Microsoft.ACE.OLEDB.12.0;" + @"data source =ElevatorLog.accdb";
string dbcommand = @"insert into [Elevator]
([MovingAction],[TimeAction])
values
(@movingaction, @timeaction)";
//? listBox1.Items.Add(movingaction + "\t\t" + timeaction + "\t\t");
using (OleDbConnection conn_db = new OleDbConnection(dbconnection))
using (OleDbCommand comm_insert = new OleDbCommand(dbcommand, conn_db))
{
comm_insert.Parameters.Add("@movingaction", OleDbType.DBDate).Value = movingaction; // not sure if this is DateTime
comm_insert.Parameters.Add("@timeaction", OleDbType.DBDate).Value = DateTime.Now;
conn_db.Open();
comm_insert.ExecuteNonQuery();
conn_db.Close();
}
PS:只是一个建议,选择一个更好的数据库,如postgreSQL、MS SQL、MySQL、SQLite…
timeaction
必须是DateTime,而不是string<代码>var timeaction=DateTime.Now代码>投票结束,因为输入错误。您还应该放入comm_insert.Parameters.AddWithValue(“@movingaction”,movingaction)代码>位于另一个AddWithValue
调用上方。您的数据类型与消息所述不正确。不要使用AddWithValue,而是使用Add。适配器插入在代码中没有函数。还可以使用块。