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"));
我认为我的语法错误,你们能帮助我吗?感谢
答案 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处理您的Connection
和Command
。例如;
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。