没有赋予一个或多个参数的值

时间:2014-02-21 08:03:01

标签: c# sql ms-access-2010

所以我将一些数据输入到文本框中,然后单击此按钮

    private void button2_Click(object sender, EventArgs e)
    {
      command.Connection = connect;
      if (idkaryawantxt.Text != "")
       {
            string q = "UPDATE tableAbsensi SET Absen_keluar =('" + (DateTime.Now.ToString("hh:mm")) + "') WHERE ID ='" + idkaryawantxt.Text.ToString() + "' AND Tanggal ='" + (DateTime.Now.ToString("MM-dd-yyyy")) +"'";
            dosomething(q);
       }
       this.Close();
    }

然后它说

  

没有赋予一个或多个参数的值

表格如下所示: enter image description here

1 个答案:

答案 0 :(得分:1)

不仅检查idkaryawantxt是否为空,还检查它是否为空:

    if (string.IsNullOrEmpty(idkaryawantxt.Text))
    {
        var currentDateTime = DateTime.Now; 
        string q = "UPDATE tableAbsensi SET Absen_keluar ='" 
            + currentDateTime.ToString("hh:mm") + "' WHERE ID ='" 
            + idkaryawantxt.Text + "' AND Tanggal ='" 
            + currentDateTime.ToString("MM-dd-yyyy") +"'";

        dosomething(q);
    }

其次,不需要此处(DateTime.Now.ToString("hh:mm"))(DateTime.Now.ToString("MM-dd-yyyy"))括号。

您不需要将idkaryawantxt.Text转换为字符串(idkaryawantxt.Text.ToString()),因为它已经是一个字符串。

此处SET Absen_keluar =('"和此处"') WHERE ID ='"不需要括号。

DateTime.Now设置为变量而不是将其调用两次可能更有用,因为在某些特殊情况下,它可以为您提供两个不同的值。

最后:避免以您在这种情况下的方式创建查询。它不是一种创建查询的优雅方式+它不受SQL注入的保护。