如何在Visual Studio 2022中将参数与Access数据库配合使用

bnl4lu3b  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(648)

我已在Access 2019中创建了数据库
我已经创建了一个基本窗体来显示上表中的数据
我希望筛选数据,仅显示某些国家/地区-如下所示
where子句是硬代码,所以我的问题是如何动态地更改filter子句,比如从“Aus”更改为“UK”。
a)我已尝试使用参数“CountryName”(如Fill,GetData(CountryName)中所示),但无法在查询构建器中使用该参数。如果可能,该如何操作?
B)是否有办法通过代码更改Fill Query属性(CommandText),因为我无法看到要使用的正确属性-请参见下面的内容

kpbpu008

kpbpu0081#

这听起来像是您正在创建一个类型化的DataSet。在这种情况下,只需保留每个表适配器的默认查询。然后,您可以在表适配器上调用FillGetData,以获取相应表中的所有数据。如果您希望能够筛选数据,请添加一个具有反映筛选器的方法名称的新查询。例如,如果要按CountryName列进行筛选,则将方法命名为FillByCountryNameGetDataByCountryName。在“查询生成器”中,必须使用?作为参数占位符,而不能使用@CountryName之类的名称,例如

SELECT * FROM MyTable WHERE CountryName = ?

在程式码中,您可以执行类似下列的动作:

Dim countryName = "UK"

myTableAdapter.FillByCountryName(myDataSet.MyTable, countryName)
kiz8lqtg

kiz8lqtg2#

您可以尝试以下操作:

DECLARE @CountryName AS NVARCHAR(50) = 'uk'

SELECT CountryName FROM MyTable

WHERE CountryName = @CountryName

如何将其转换为代码:

Public Sub GetCountry()
    DefaultCatalog = "MyTable"
    Dim selectStatement = "SELECT CountyrName  FROM MyTable WHERE CountyrName = @CountryName"
    Using cn As New SqlConnection With {.ConnectionString = ConnectionString}
        Using cmd As New SqlCommand With {.Connection = cn, .CommandText = selectStatement}
            cmd.Parameters.AddWithValue("@CountryName", "uk")
            cn.Open()
            Dim reader = cmd.ExecuteReader()
            If reader.HasRows Then
                reader.Read()
                Console.WriteLine(reader.GetString(0))
            End If
        End Using
    End Using
End Sub

相关问题