首页 > 解决方案 > 选择数组值的 SQL 语句

问题描述

我正在做一个视觉基础项目。我有一个连接到我的项目的 mdb 数据库。我想添加一个SELECT查询来查找我在程序中给出的数组中的结果

我试图写这样的声明:

SELECT kodu, adi_soyadi, sectigi_ders_say
FROM ogrenciler
WHERE kodu IN ?

但它不起作用。在我的页面代码中,我有一个数组,我想从数组"ogrenciler"中的表中查找结果"kodu"

标签: sqlvb.netms-access

解决方案


好吧,您可以将该数组发送到 Access 中的临时表,但这会阻止多个用户同时使用该软件。(或者您可以在临时表中添加一些用户名。但是,如果选择的数组很小,比如最多 50 个,那么您可以创建 sql 字符串。

例如:

    Dim MySQL As String = "SELECT * from tblHotels WHERE ID IN("
    Dim IdList(5) As Integer
    Dim i As Integer
    For i = 1 To 5
        IdList(i) = i
    Next

    Dim MyList As String = ""
    For i = 1 To 5
        If MyList <> "" Then MyList = MyList & ","
        MyList = MyList & IdList(i)
    Next
    MySQL = MySQL & MyList & ")"
    Using MyCon2 As New OleDbConnection(My.Settings.OLESQL)
        Dim da As New OleDbDataAdapter(MySQL, MyCon2)
        Dim rstDat As New DataTable()
        da.Fill(rstDat)
        For i = 0 To rstDat.Rows.Count - 1
            Debug.Print(rstDat.Rows(i).Item("HotelName"))
        Next ' etc etc. etc.
    End Using

因此,您可以使用以下 SQL 格式:

 SELECT * FROM tblHotels where ID IN (1,2,3)

从而建立“清单”。这种方法的唯一缺点是 sql 字符串限制为 2000 个字符。因此,如果您的列表大于 50 项左右,那么您必须采用不同的方法。


推荐阅读