你好,我想知道是否有人可以帮助我。我需要在关系数据库上输出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
[请您帮我,我已经迷路了。谢谢:)
大多数数据库对象不仅需要关闭,而且还需要处理。即使有错误,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