【发布时间】:2020-02-11 18:51:34
【问题描述】:
我正在尝试编写动态 SQL 语句,但出现异常语法错误,靠近我在 SQL 语句中使用的 LIKE 运算符 webmethod.asmx.cs
[WebMethod]
public void leavesRequest_data_to_hr()
{
List<leavesrecord> record = new List<leavesrecord>();
string Todaydate = DateTime.Now.ToString("dd-MM-yyyy");
string status = "Pending";
SqlConnection connection = new SqlConnection("Data Source = AMARNATHB; Initial Catalog = sample; Integrated Security = True");
SqlCommand cmd = new SqlCommand("select leaverequest.id,leaverequest.emp_id,leaverequest.date_inserted,leavesSignup.name,leaverequest.leaves_form,leaverequest.leaves_upto,leaverequest.leave_type,leaverequest.description,leaverequest.no_of_leaves from leaverequest inner join leavesSignup on leaverequest.emp_id = leavesSignup.emp_id where leaverequest.date_inserted like '%'"+Todaydate+"'%' and leaverequest.status='" + status + "'", connection);
cmd.CommandType = CommandType.Text;
connection.Open();
SqlDataReader idr = cmd.ExecuteReader();
while (idr.Read())
{
}
}
【问题讨论】:
-
你应该真正考虑使用参数而不是连接你的变量。它可以防止像 '%'"+Todaydate+"'%' 而应该是 '%"+Todaydate+"%' 之类的问题,这也取决于 date_inserted 是否为字符串。
-
为什么要使用带有日期限定符的 LIKE?
2020-02-11是“喜欢”2020-02-12吗?他们比2020-12-02更相似吗?使用 SQL 参数。 就是这样 -
like 用于字符串/varchar 等。