Sql server 如何在vb中正确连接数据库

Sql server 如何在vb中正确连接数据库,sql-server,vba,visual-studio-2015,Sql Server,Vba,Visual Studio 2015,我需要有关我的代码和/或连接的帮助。我收到一个错误,显示: System.Data.dll中发生“System.InvalidOperationException”类型的未处理异常 其他信息:ExecuteReader需要打开且可用的连接。连接的当前状态为关闭。 在此代码中:(第4行) 但是如果我尝试打开连接。这种情况经常发生 System.Data.dll中发生“System.InvalidOperationException”类型的未处理异常 其他信息:连接未关闭。连接的当前状态为打开。 使

我需要有关我的代码和/或连接的帮助。我收到一个错误,显示:

System.Data.dll中发生“System.InvalidOperationException”类型的未处理异常

其他信息:ExecuteReader需要打开且可用的连接。连接的当前状态为关闭。

在此代码中:(第4行)

但是如果我尝试打开连接。这种情况经常发生

System.Data.dll中发生“System.InvalidOperationException”类型的未处理异常

其他信息:连接未关闭。连接的当前状态为打开。

使用此代码:(第1行)


你发了一堆代码。然而。。。你从未向OP.Nevermind指出过这个问题。通过一些调整已经解决了这个问题。谢谢你发了一堆代码。然而。。。你从未向OP.Nevermind指出过这个问题。通过一些调整已经解决了这个问题。无论如何谢谢你
cmd.Connection = cn
    cmd.CommandText = "SELECT ID, LastName, FirstName FROM tblMembers WHERE ID = @ID"
    cmd.Parameters.Add(New SqlClient.SqlParameter("@ID", SqlDbType.Int)).Value = dg1.Item(0, e.RowIndex).Value
    dr = cmd.ExecuteReader
    If dr.HasRows() Then
        With dr
            .Read()
            txtLname.Text = dr("LastName")
            txtFname.Text = dr("FirstName")
        End With
    End If
 cn.Open()
    cmd.Connection = cn
    cmd.CommandText = "SELECT ID, LastName, FirstName FROM tblMembers WHERE ID = @ID"
    cmd.Parameters.Add(New SqlClient.SqlParameter("@ID", SqlDbType.Int)).Value = dg1.Item(0, e.RowIndex).Value
    dr = cmd.ExecuteReader
    If dr.HasRows() Then
        With dr
            .Read()
            txtLname.Text = dr("LastName")
            txtFname.Text = dr("FirstName")
        End With
    End If
    Dim cn As SqlConnection
    Dim cmd As SqlCommand
    Dim dr As SqlDataReader
    Dim connetionString As String
    Dim Process_Id As String
    Dim Processname As String

    connetionString = "Data Source=ServerName;Initial Catalog=DataBaseName;User ID=UserName;Password=PassWord"

    cn = New SqlConnection(connetionString)

    cn.Open()

    cmd = New SqlCommand("SELECT Process_Id,Processname FROM  dbo.Process_Master where Process_Id = @ID", cn)

    cmd.Parameters.Add(New SqlClient.SqlParameter("@ID", SqlDbType.Int)).Value = "21"

    dr = cmd.ExecuteReader

    If dr.HasRows() Then

        With dr.Read()

            Process_Id = dr("Process_Id")
            Processname = dr("Processname")

        End With
    End If