SQL结果到全局变量

时间:2016-02-04 19:51:37

标签: vb.net mdi

在我的MDIParent Me_Load中,我有一个SQL查询,它根据Windows ID返回用户信息。这很好用,但我真的很想将这个逻辑移到一个模块中,并将db中的每个值分配给一个全局变量,以便在别处使用。我希望能够以父MDI的任何子形式访问contact_id。我已经习惯了PHP,我只是将它分配给我可以在任何地方引用的会话变量。

这是我当前的SQL代码

            Dim sql_query As String

        Dim errorMessages As New StringBuilder()
        Dim cnn = ConfigurationManager.ConnectionStrings("sql_connection_string").ConnectionString
        Dim adapter As SqlDataAdapter
        Dim ds As New DataTable()
        Dim User_ID As String
        Dim User_First_Name As String
        Dim User_Last_Name As String
        Dim User_Contact_CD As String
        Dim User_Login As String

        sql_query = "SELECT Contact_ID, First_Name_CH, Last_Name_CH, Contact_CD, Login_VC FROM [Worktool].[dbo].[vwEmployees_T] WHERE Login_VC = '" & username & "'"

        Using connection As New SqlConnection(cnn)
            Try
                If connection.State = ConnectionState.Closed Then connection.Open()
                adapter = New SqlDataAdapter(sql_query, connection)
                adapter.Fill(ds)
                User_ID = ds.Rows(0)("Contact_ID").ToString()
                User_First_Name = ds.Rows(0)("First_Name_CH").ToString()
                User_Last_Name = ds.Rows(0)("Last_Name_CH").ToString()
                User_Contact_CD = ds.Rows(0)("Contact_CD").ToString()
                User_Login = ds.Rows(0)("Login_VC").ToString()
                connection.Close()
            Catch ex As SqlException
                MsgBox("Sorry, there was an issue with the connection. Please try again ! ")
                Dim i As Integer
                For i = 0 To ex.Errors.Count - 1
                    errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                        & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                        & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                        & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                        & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
                Next i
                MsgBox(errorMessages.ToString())
            End Try
        End Using


    'Assign messages
        main_window_welcome.Text = "Welcome back, " & Replace(User_First_Name, " ", "") & " " & Replace(User_Last_Name, " ", "")

变量用户名是

Public username = Environ$("Username")

1 个答案:

答案 0 :(得分:3)

您已经在类中声明了4个变量,并且它们是该类的私有变量。此时您的代码可以运行。 Hilight那4个变量声明和剪切它们。您的代码显示错误,因为您刚刚删除了声明。

将模块添加到您的解决方案中(将其命名为您想要的名称) 将声明粘贴到模块体中。

将Dim更改为Public。

你的错误消失了。

您的变量现已公开,并可在整个解决方案中使用。