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

时间:2016-09-13 01:59:44

标签: sql-server vba visual-studio-2015

我的代码和/或连接需要帮助。我收到的错误是:

未处理的类型' System.InvalidOperationException'发生在System.Data.dll

附加信息:ExecuteReader需要一个开放且可用的连接。连接的当前状态已关闭。

在此代码中:(第4行)

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

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

未处理的类型' System.InvalidOperationException'发生在System.Data.dll

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

使用以下代码:(第1行)

 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

1 个答案:

答案 0 :(得分:0)

    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