我正在使用 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 语句中的每个值添加单独的参数。
关于c# - 使用 C# 中的参数化查询发送 SQL 中 IN 运算符的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35939089/