【问题标题】:How to properly connect to database in vb如何在vb中正确连接到数据库
【发布时间】:2016-09-13 15:19:05
【问题描述】:

我需要有关我的代码和/或连接的帮助。我收到一条错误消息:

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

附加信息: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.Data.dll 中出现“System.InvalidOperationException”类型的未处理异常

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

使用此代码:(第 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

【问题讨论】:

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


    【解决方案1】:
        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
    

    【讨论】:

    • 你发布了一堆代码。然而......你从来没有向 OP 指出这个问题。
    • 没关系。已经通过一些调整解决了这个问题。还是谢谢
    猜你喜欢
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多