Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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#和ms数据库-条件表达式中的数据类型不匹配_C#_Database_Ms Access - Fatal编程技术网

C#和ms数据库-条件表达式中的数据类型不匹配

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

我正在构建一个应用程序,当我按下按钮时,操作需要保存在Microsoft Access数据库中,但当我按下按钮时,代码的下一部分会出现错误“条件表达式中的数据类型不匹配”

        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。适配器插入在代码中没有函数。还可以使用块。