查询表达式中的语法错误

时间:2014-02-21 07:37:49

标签: c# sql ms-access-2010

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"));

我认为我的语法错误,你们能帮助我吗?感谢

这是错误的图片: http://sadpanda.us/images/1889033-X8SIZZN.jpg

3 个答案:

答案 0 :(得分:1)

看起来你错过了一句话。这样:

AND Tanggal ='" + (DateTime.Now.ToString("MM-dd-yyyy"));

应该是

AND Tanggal ='" + (DateTime.Now.ToString("MM-dd-yyyy") + "');

但你真的应该使用参数来防止这些错误以及SQL injection

答案 1 :(得分:1)

请不要那样做!

你绝不应该在sql查询中使用字符串连接。始终使用parameterized queries。这种字符串连接对SQL Injection攻击开放。

通过这种连接,您可能会忘记使用逗号,引号,括号等。

还可以使用using statement处理您的ConnectionCommand。例如;

using(OleDbConnection con = new OleDbConnection(ConnectionString))
using(OleDbCommand cmd = com.CreateCommand())
{
   string s = "UPDATE tableAbsensi SET Absen_keluar=? WHERE ID=? AND Tanggal=?";
   cmd.CommandText = s;
   cmd.Parameters.AddWithValue("@absen", DateTime.Now.ToString("hh:mm"));
   cmd.Parameters.AddWithValue("@id", idkaryawantxt.Text.ToString());   
   cmd.Parameters.AddWithValue("@tanggal",  DateTime.Now.ToString("MM-dd-yyyy")); 
   cmd.ExecuteNonQuery();  
}

答案 2 :(得分:0)

不要使用字符串连接将值插入SQL代码中。总是使用由格式化导致的参数和类似问题。要了解为什么以及如何使用参数check this out