将数据从sql填充到网格视图

时间:2014-01-23 04:49:42

标签: visual-studio-2012

我正在尝试从SQL填充网格视图中的数据。当我单击按钮并在网格视图中填充数据时,我获得了用户访问权限。但我得到一个错误,已经有一个与此命令关联的开放数据读取器必须先关闭。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            If ComboBox2.Text = "-----select-----" Then
                MsgBox("Please Select Region and Site ID", MsgBoxStyle.Critical, "failure")
            Else
                Button3.Show()
                Button4.Show()
                Button5.Show()
                connection_open()
                qry = "select * from LOG_ACCESS where ID='" & UCase(Environ$("Username")) & "' "
                cmd1 = New SqlCommand(qry, cnn)
                dr = cmd1.ExecuteReader
                If dr.Read = True Then
                    MsgBox("login successful", MsgBoxStyle.Information, "login")
                    qry1 = "select * from SITE_DETAILS where Region = '" + ComboBox1.SelectedItem.ToString + "' And Site_ID = '" + ComboBox2.SelectedItem.ToString + "'"
                    adp = New SqlDataAdapter(qry1, cnn)
                    dr.Close()
                    adp.Fill(ds, "SITE_DETAILS")
                    'dr.Close()
                    DataGridView1.DataSource = ds
                    DataGridView1.DataMember = ds.Tables(0).ToString
                    DataGridView1.Hide()
                    'Me.Hide()
                    'dr.Close()
                    connection_close()

                Else
                    MsgBox("Please Contact Administrator", MsgBoxStyle.Critical, "failure")
                    dr.Close()
                    connection_close()
                End If
            End If
            dr.Close()
            connection_close()
        Catch ex As SqlException
            MsgBox(ex.Message, MsgBoxStyle.Critical, "SqlError")
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

2 个答案:

答案 0 :(得分:0)

在您的连接字符串集MARS =“true”

尝试使用此代替dr = cmd1.ExecuteReader

dr = comm.ExecuteReader(CommandBehavior.CloseConnection)

答案 1 :(得分:0)

我想知道问题是不是你的open_connection方法发生了什么。

通常,当我看到数据网格已填满时,它位于using语句的上下文中...(使用sql SQLConnection ...)您是否尝试过这种方法?

这样你的连接只能在使用范围的大括号中打开...一旦块完成,它将被自动处理,因此你不需要在if逻辑中使用所有那些.close。 / p>

以下是您可能会发现有用的链接: http://www.canofcode.co.uk/software/c-sharp-using-statement/