Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用SQl查询结果填充VB.net datatable(链接到microsoft access关系数据库)_Vb.net - Fatal编程技术网

用SQl查询结果填充VB.net datatable(链接到microsoft access关系数据库)

用SQl查询结果填充VB.net datatable(链接到microsoft access关系数据库),vb.net,Vb.net,你好,我想知道是否有人能帮我。 我需要在关系数据库上输出SQL查询的结果。我希望输出与在MicrosoftAccess中执行查询时看到的表一样。为此,我使用了VB.net数据网格。我看到简单查询的结果,例如 “从表单中选择*” 但是,如果我尝试向SQL语句添加更多的细节(即使只是一个WHERE),代码将抛出错误System.Data.OleDb.OledBeException:“没有为一个或多个必需参数提供值。” 我需要的特定SQL语句是 “从表单上的表单内部联接[Student data]中选

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

“从表单中选择*”

但是,如果我尝试向SQL语句添加更多的细节(即使只是一个WHERE),代码将抛出错误System.Data.OleDb.OledBeException:“没有为一个或多个必需参数提供值。” 我需要的特定SQL语句是

“从表单上的表单内部联接[Student data]中选择[Student data]。[学生姓名],[Student data]。[学生数据]。[学生数据]。[表单组]=[Student data]。[表单组]其中((([Student data].严重性)=高));”

这是我目前使用的简单代码:

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
请你帮帮我,我迷路了。
谢谢:)

大多数数据库对象不仅需要关闭,还需要释放<代码>使用…结束使用块为您处理此问题,即使出现错误。一个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

检查列名是否有拼写错误。另外,
[Student data]中的点后面还有一个空格。[学生姓氏]
。拆下它。如果将“高”替换为“高”,它会工作吗?似乎你已经省略了应该围绕文本文字的撇号。非常感谢你,我的代码现在可以工作了!!!我盯着那个代码看了两天,试图找出错误。它是如此简单。非常感谢。