Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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# 插入到表中时数据类型不匹配_C#_Ms Access_Visual Studio 2012 - Fatal编程技术网

C# 插入到表中时数据类型不匹配

C# 插入到表中时数据类型不匹配,c#,ms-access,visual-studio-2012,C#,Ms Access,Visual Studio 2012,我在将数据插入名为Order的Microsoft Access表时遇到一些问题。我列出的方法是在我的数据访问层中创建的,并通过演示层中的按钮单击事件调用。我得到的错误是: 条件表达式中的数据类型不匹配 错误突出显示在cmd.ExecuteNonQuery()行: 数据访问层方法: public static void processOrder(int employeeId, int tableId, DateTime orderDate, DateTime orderBegin, bool or

我在将数据插入名为
Order
的Microsoft Access表时遇到一些问题。我列出的方法是在我的数据访问层中创建的,并通过演示层中的按钮单击事件调用。我得到的错误是:

条件表达式中的数据类型不匹配

错误突出显示在
cmd.ExecuteNonQuery()
行:

数据访问层方法:

public static void processOrder(int employeeId, int tableId, DateTime orderDate, DateTime orderBegin, bool orderStatus)
{
   try
   {
      if (KaiConnection.State == ConnectionState.Closed)
         KaiConnection.Open();

      OleDbCommand cmd = new OleDbCommand(
         "INSERT INTO [Order] (EmployeeID, [TableID], OrderDate, OrderBegin, OrderStatus)" +
         " VALUES (?,?,?,?,?)", KaiConnection);
      //cmd.CommandText = sSQLCommand;
      cmd.Parameters.AddWithValue("?", employeeId);
      cmd.Parameters.AddWithValue("?", tableId);
      cmd.Parameters.AddWithValue("?", orderDate);
      cmd.Parameters.AddWithValue("?", orderBegin);
      cmd.Parameters.AddWithValue("?", orderStatus);

      // Execute the SQL command
      cmd.ExecuteNonQuery();
      KaiConnection.Close();
   }
   catch (Exception ex)
   {
      MessageBox.Show((ex.ToString()));
   }
}
演示层按钮单击事件:

private void btnProcessOrder_Click(object sender, EventArgs e)
{
   Order anOrder = new Order();
   anOrder.EmployeeId = empId;
   anOrder.TableId = int.Parse(txtTableID.Text);
   anOrder.OrderDate = DateTime.Today;
   anOrder.OrderBegin = DateTime.Now;
   anOrder.OrderStatus = true;
   anOrder.processOrder();
}

下面是使用
OleDbParameter
类对代码的修改:

public static void processOrder(int employeeId, int tableId, DateTime orderDate, DateTime orderBegin, bool orderStatus)
{
    try
    {
        if (KaiConnection.State == ConnectionState.Closed)
            KaiConnection.Open();

        OleDbCommand cmd = new OleDbCommand("INSERT INTO [Order] (EmployeeID, [TableID], OrderDate, OrderBegin, OrderStatus)" +
                         " VALUES (@EmployeeID, @TableID, @OrderDate, @OrderBegin, @OrderStatus)", KaiConnection);

        OleDbParameter[] parameters = new OleDbParameter[5];
        parameters[0] = new OleDbParameter("@EmployeeID", OleDbType.Integer);
        parameters[1] = new OleDbParameter("@TableID", OleDbType.Integer);
        parameters[2] = new OleDbParameter("@OrderDate", OleDbType.Date);
        parameters[3] = new OleDbParameter("@OrderBegin", OleDbType.Date);
        parameters[4] = new OleDbParameter("@OrderStatus", OleDbType.Boolean);

        parameters[0].Value = employeeId;
        parameters[1].Value = tableId;
        parameters[2].Value = orderDate;
        parameters[3].Value = orderBegin;
        parameters[4].Value = orderStatus;

        for (int i = 0; i < 5; i++)
        {
            cmd.Parameters.Add(parameters[i]);
        }

        cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        KaiConnection.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show((ex.ToString()));
    }
}
publicstaticvoidprocessorder(int-employeeId、int-tableId、DateTime-orderDate、DateTime-orderBegin、bool-orderStatus)
{
尝试
{
if(KaiConnection.State==ConnectionState.Closed)
打开连接();
OleDbCommand cmd=新的OleDbCommand(“插入到[订单](员工ID、[TableID]、订单日期、订单开始、订单状态)”+
“值(@EmployeeID、@TableID、@OrderDate、@OrderBegin、@OrderStatus)”,连接);
OLEDB参数[]参数=新的OLEDB参数[5];
参数[0]=新的OLEDB参数(“@EmployeeID”,OleDbType.Integer);
参数[1]=新的OLEDB参数(“@TableID”,OleDbType.Integer);
参数[2]=新的OLEDB参数(“@OrderDate”,OleDbType.Date);
参数[3]=新的OLEDB参数(“@OrderBegin”,OleDbType.Date);
参数[4]=新的OLEDB参数(“@OrderStatus”,OleDbType.Boolean);
参数[0]。值=employeeId;
参数[1]。值=tableId;
参数[2]。值=订单日期;
参数[3]。值=orderBegin;
参数[4]。值=订单状态;
对于(int i=0;i<5;i++)
{
cmd.Parameters.Add(参数[i]);
}
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
KaiConnection.Close();
}
捕获(例外情况除外)
{
Show((例如ToString());
}
}