在多个文本框中显示多行

时间:2015-09-01 20:43:23

标签: sql vb.net sqldatareader

我有一个包含多行的SQL数据库表。我想根据该行的ID从行中获取数据,然后将其显示在某个文本框中。我已经使用Access 2013,但我最近决定将其转移到SQL。

我收到错误

  

“已经有一个打开的Datareader与此命令相关联”

在我向您展示代码之前,它非常简单。我有点“使”它与Access 2013一起工作,但SQL不喜欢它。 APP的工作方式最重要的是让数据显示在文本框中,以便更容易修改数据,同时能够有效地切换到下一个框。这就是为什么我没有使用Gridview。好吧,我有,但这是一个很好的资产登记册。

代码:

Try
        conn.Open()
        '***************** Populate Textboxes based on ID 1 row of PrinterDetails ***************** '
        Dim sql1 As String
        sql1 = "select * from PrinterDetails where ID=1"
        cmd = New SQLCommand(sql1, conn)
        reader = cmd.ExecuteReader
        While reader.Read
            '' Convert to string to prevent DBNULL errors
            SNAME1.Text = reader.Item("SiteName").ToString
            MAKE1.Text = reader.Item("Make").ToString
            MODEL1.Text = reader.Item("Model").ToString
            PRINTERIP1.Text = reader.Item("PrinterIP").ToString
            PSERVER1.Text = reader.Item("Server").ToString
            SHARE1.Text = reader.Item("Share").ToString
            LOC1.Text = reader.Item("Location").ToString
            UN1.Text = reader.Item("Username").ToString
            PASS1.Text = reader.Item("Password").ToString
            SUPPORT1.Text = reader.Item("Support").ToString
        End While
        '***************** Populate Textboxes based on ID 2 row of PrinterDetails ***************** '
        Dim sql2 As String
        sql2 = "select * from PrinterDetails where ID=2"
        cmd = New SQLCommand(sql2, conn)
        reader = cmd.ExecuteReader
        While reader.Read
            '' Convert to string to prevent DBNULL errors
            SNAME2.Text = reader.Item("SiteName").ToString
            MAKE2.Text = reader.Item("Make").ToString
            MODEL2.Text = reader.Item("Model").ToString
            PRINTERIP2.Text = reader.Item("PrinterIP").ToString
            PSERVER2.Text = reader.Item("Server").ToString
            SHARE2.Text = reader.Item("Share").ToString
            LOC2.Text = reader.Item("Location").ToString
            UN2.Text = reader.Item("Username").ToString
            PASS2.Text = reader.Item("Password").ToString
            SUPPORT2.Text = reader.Item("Support").ToString
        End While

我尝试关闭连接并重新打开,但这不起作用。

1 个答案:

答案 0 :(得分:0)

为什么这么奇怪的查询和代码;您的SQL查询可以简单地使用IN运算符

select * from PrinterDetails where ID in (1,2); 

BTW,对于您的问题,请检查This MSDN Link,特别是备注部分。实质上,您需要关闭已打开的阅读器。