SQL 结果到全局变量

SQL Result to Global Variable

在我的 MDIParent Me_Load 中,我有一个 SQL 查询 returns 基于 Windows ID 的用户信息。这很好用,但是我真的很想将此逻辑移出到一个模块中,并将数据库中的每个值分配给一个全局变量以在其他地方使用。我希望能够以父 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")

您已经在 class 中声明了 4 个变量,并且它们对 class 是私有的。此时您的代码可以正常工作。突出显示这 4 个变量声明并剪切它们。您的代码显示错误,因为您刚刚删除了声明。

向您的解决方案添加一个模块(根据需要命名) 将声明粘贴到模块主体中。

将 Dim 更改为 Public。

您的错误消失了。

您的变量现在 public 并且在您的整个解决方案中可用。