我正在使用asp.net和C#制作我的应用程序。
在那儿进行数据库操作时,我正在使用参数化查询。
这是一个代码
mySqlCommand = new MySqlCommand();
mySqlCommand.Parameters.AddWithValue("@ids", ids);
switch (privilegeType.ToString())
{
case "CorporateLead":
myQuery = @"SELECT
leavea.applied_leave_id_pk,
leavea.emp_id_fk,
leavea.emp_name AS NAME,
leavea.start_date,
leavea.end_date,
leavea.is_half_day,
..............
FROM
lea_applied_leave AS leavea
INNER JOIN emp_employee_master AS emp
ON emp.employee_master_id_pk = leavea.emp_id_fk
WHERE emp.`corporate_id_fk` IN (@ids) ;
其中的ID将包括(10,11,12)
Ids是一个字符串。参数计数器将根据登录用户而有所不同。我将该字符串作为参数化查询传递。
但是,当应用执行此操作时,它只会得到属于id为10的结果。
当我直接在MySQL上执行此代码时,它显示正确的结果。
那么,这有什么问题呢?有什么方法可以向IN运算符发送参数吗?
参数不能代替字符串操作。它采用“原样”值。
也就是说,您的SQL应该如下所示:
WHERE emp.`corporate_id_fk` IN (@id1, @id2, @id3) ;
为您的SQL语句中的每个值添加一个单独的参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句