从访问数据库导入特定行

时间:2014-03-24 10:10:28

标签: sql vb.net visual-studio-2010 textbox

目前我有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

1 个答案:

答案 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中,所以我构建了一个文本框数组并使用索引来填充正确的框

另请注意,我已在您的一次性物品周围添加了使用声明,以确保它们已正确关闭和处理