目前我有5个TextBox,我希望从Access数据库的第5行填充。
我尝试了几种不同的SQL查询,但没有成功。
这是第一个方框的工作代码:
Try
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test\Response.mdb;")
Dim cmd As New OleDbCommand
con.Open()
cmd.Connection = con
cmd.CommandText = "SELECT * FROM question"
cmd.Prepare()
Dim Trace = cmd.ExecuteReader
With Trace
.Read()
q1txt.Text = .Item("questiontext")
.Close()
End With
Catch
End Try
该代码完美无缺,但是当我尝试扩展此代码以包含接下来的4代码时,我无法使其工作或找到任何可以帮助我的信息。
我尝试使用
编写不同的查询来填充每个框select * from question limit n-1, 1
和
select top 1 field from question
其他几十个人都抛出了一个或另一个例外。
有没有人知道改变我的代码的方法,所以我可以有效地告诉它:
SELECT TOP 5 FROM question
q1txt.Text = .item("ROW1")
q2txt.Text = .item("ROW2")
q3txt.Text = .item("ROW3")
q4txt.Text = .item("ROW4")
q5txt.Text = .item("ROW5")
感谢史蒂夫帮我解决这个问题!我现在使用的代码在这里:
Dim boxes = {q1txt, q2txt, q3txt, q4txt, q5txt}
Dim index As Integer = 0
Using con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test\Response.mdb;")
Using cmd = New OleDbCommand("SELECT TOP 5 * FROM question", con)
con.Open()
Using Trace = cmd.ExecuteReader
For Each item In boxes
With Trace
.Read()
boxes(index).Text = .Item("questiontext")
index += 1
End With
Next
End Using
End Using
End Using
答案 0 :(得分:1)
Access没有像MySql这样的LIMIT关键字。您可以在某些列上进行ORDER BY并获取前5列。我不知道你是否有任何可以订购的列,所以我显示没有ORDER BY子句的代码,但是按照数据库给它们的顺序获取前5条记录
Dim boxes = new TextBox() {q1Text, q2Text, q3Text, q4Text, q5Text }
Dim index As Integer = 0
Using con = New OleDbConnection(".....")
Using cmd = New OleDbCommand("SELECT TOP 5 * FROM question", con)
con.Open()
Using Trace = cmd.ExecuteReader
While Trace.Read()
boxes(index).Text = Trace.Item("questiontext")
index += 1
End While
End Using
End Using
End Using
在每次读取时,您都有不同的记录放在不同的TextBox中,所以我构建了一个文本框数组并使用索引来填充正确的框
另请注意,我已在您的一次性物品周围添加了使用声明,以确保它们已正确关闭和处理