【问题标题】:MySQL Select query with condition using list in VB.netMySQL 使用 VB.net 中的列表选择带有条件的查询
【发布时间】:2020-01-17 05:43:27
【问题描述】:

我有一个名为“table1”的 mysql 表,其中包含名为“column1”、“column2”和“column3”的 3 列,我有一个名为“list1”的列表。 我想选择 list1 包含 column2 的单元格值的所有行。我尝试了几种方法来制作查询字符串,但我失败了。请帮忙。我试过了

Dim mysqlconn = New MySqlConnection
    mysqlconn.ConnectionString = "server=localhost;user id=root;password=1234;database=Share"
    mysqlconn.Open()
    Dim adapter As New MySqlDataAdapter("SELECT * FROM table1 WHERE " & list1.Contains & "('" & column2 & "');", mysqlconn)
    Dim datatable As New DataTable()
    adapter.Fill(datatable)
    Dim cmd As New MySqlCommand
    cmd.Connection = mysqlconn

【问题讨论】:

  • 您打算如何在 sql 查询字符串中使用 vb.net 列表?我建议您将所有数据加载到数据表中,然后在数据表中查询您想要的数据。
  • @preciousbetine 通常希望尽可能让服务器过滤结果。例如,如果 OP 使用实体,则使用 LINQ 会更容易,但事实并非如此。

标签: vb.net


【解决方案1】:

你几乎做了,但没有完全做的是使用MySQL IN 来查看一个值是否在列表中。

如果 column2 是数字,

SELECT * FROM table1 WHERE column2 in (1,2,3);
"SELECT * FROM table1 WHERE column2 in (" & String.Concat(",", list1) & ");"

如果column2是文本,

SELECT * FROM table1 WHERE column2 in ('1','2','3');
"SELECT * FROM table1 WHERE column2 in (" & String.Concat(",", list1.Select(Function(i) $"'{i}'").ToArray()) & ");"

【讨论】:

  • 我没有想到将in 语句与String.Concat 结合起来。很好的答案。
  • 感谢先生的热心帮助。问题已解决。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 2014-12-15
  • 2011-08-10
  • 1970-01-01
  • 2022-08-07
相关资源
最近更新 更多