用SQl查询的结果填充VB.net数据表(链接到Microsoft Access关系数据库)

问题描述 投票:0回答:1

你好,我想知道是否有人可以帮助我。我需要在关系数据库上输出SQL查询的结果。我希望输出就像在Microsoft Access中执行查询时看到的表一样。为此,我使用了VB.net数据网格。我看到了简单查询的结果,例如...

“ SELECT * FROM Form;”

但是,如果我尝试向SQL语句添加更多细节(甚至只是WHERE),代码将引发错误System.Data.OleDb.OleDbException:'未为一个或多个必需参数提供值。'我需要的特定SQL语句是...

“选择[Student data]。[Student First Name],[Student data]。[Student Last Name],[Student data]。Severity,[Student data]。[Form group] from Form INNER JOIN [Student data] ON Form。[Form group] = [Student data]。[Form group] WHERE(((([[Student data] .Severity)= High));“

这是我当前可用的简单代码:

Private Sub data_table()
        provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= "
        datafile = "P:\Documents\SCHOOL WORK\A level\COMPUTER SCIENCE\PROJECT\Visual basic\Student Data.accdb"
        connstring = provider & datafile
        myconnection.ConnectionString = connstring
        myconnection.Open()
        Dim command As New OleDbCommand("SELECT * FROM Form;", myconnection)
        Dim reader As OleDbDataReader = command.ExecuteReader()
        Dim dt As New DataTable()
        dt.Load(reader)
        DataGridView1.DataSource = dt
        myconnection.Close()
End Sub

这是显示错误的代码:

Private Sub data_table()
        provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= "
        datafile = "P:\Documents\SCHOOL WORK\A level\COMPUTER SCIENCE\PROJECT\Visual basic\Student Data.accdb"
        connstring = provider & datafile
        myconnection.ConnectionString = connstring
        myconnection.Open()
        Dim command As New OleDbCommand("SELECT [Student data].[Student First Name], [Student data]. [Student Last Name], [Student data].Severity, [Student data].[Form group] FROM Form INNER JOIN [Student data] ON Form.[Form group] = [Student data].[Form group] WHERE ((([Student data].Severity)= High));", myconnection)
        Dim reader As OleDbDataReader = command.ExecuteReader()
        Dim dt As New DataTable()
        dt.Load(reader)
        DataGridView1.DataSource = dt
        myconnection.Close()
End Sub

[请您帮我,我已经迷路了。谢谢:)

vb.net
1个回答
0
投票

大多数数据库对象不仅需要关闭,而且还需要处理。即使有错误,Using...End Using块也会为您处理。一个单独的Using块可以在此处处理连接和命令。

一旦连接和命令被End Using关闭并释放,我们将更新用户界面。

我真的不明白为什么您需要在查询中加入联接。所有数据均从同一表中提取,而Where子句引用同一表。

Private Sub data_table()
    Dim dt As New DataTable
    Using cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=P:\Documents\SCHOOL WORK\A level\COMPUTER SCIENCE\PROJECT\Visual basic\Student Data.accdb;"),
            cmd As New OleDbCommand("SELECT 
                            [Student First Name], 
                            [Student Last Name], 
                            Severity, 
                            [Form group] 
                            FROM [Student data]  WHERE Severity= 'High'));", cn)
        cn.Open()
        dt.Load(cmd.ExecuteReader)
    End Using
    DataGridView1.DataSource = dt
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.