c# - 使用 C# 中的参数化查询发送 SQL 中 IN 运算符的参数

标签 c# mysql asp.net parameter-passing parameterized-query

我正在使用 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/

相关文章:

c# - anchor 中 "title"属性的格式/安全字符串

mysql - 有聚合函数时如何获得最大时间?

MySQL 5.6 Innodb 耗尽单表表空间 ID

c# - 防止多次重复数据输入实体数据库(关闭)

c# - 在 aspx 中,当在文本框上按下 "Enter"时如何触发按钮单击事件,而源 cs 文件中定义的按钮单击事件

用于添加多列的mysql语句,无论它们是否存在

c# - 任务在一天中占用的小时数的算法

c# - 获取 ListView 中对象的数据库 ID 并从用户控件 ListView 更新 ListView

c# - foreach 循环中的 DeleteObject()

javascript - C# - Zoom GeckoWebBrowser (GeckoFX 45) 就像在 Mozilla Firefox 中一样