Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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 从access数据库导入特定行_Sql_Vb.net_Visual Studio 2010_Textbox - Fatal编程技术网

Sql 从access数据库导入特定行

Sql 从access数据库导入特定行,sql,vb.net,visual-studio-2010,textbox,Sql,Vb.net,Visual Studio 2010,Textbox,目前,我有5个文本框,我希望从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

目前,我有5个文本框,我希望从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 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

Access没有像MySql这样的限制关键字。你可以在某个栏目上点菜,然后选前5个栏目。我不知道您是否有任何可以排序的列,因此我显示的代码没有ORDERBY子句,而是按照数据库给定的顺序获取前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
每次读取时,您都会在不同的文本框中放置不同的记录,因此我构建了一个文本框数组,并使用索引填充正确的文本框


还请注意,我在您的一次性物品周围添加了Using语句,以确保它们正确关闭和处置

谢谢!我不知道你能做到。但是它没有起作用。。。它只填充第一个框。我通过在.Read()之后添加“For Each item in box”来编辑代码,但这会用顶部字段填充所有5个。啊,开始工作了!再次感谢你。将发布上面的工作代码。修复了,忘记循环读卡器该代码现在工作得很好,谢谢。我可以为每个人删除我的。非常感谢!好的,我应该警告您,这段代码实际上被锁定为要检索的控件数和行数。(如果更改TOP X值,请不要忘记向数组中添加新控件)。如果需要更改,我建议使用更合适的控件,如DataGridView
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