Vb.net 将SQL结果转换为全局变量

Vb.net 将SQL结果转换为全局变量,vb.net,mdi,Vb.net,Mdi,在我的MDI父对象Me_Load中,我有一个SQL查询,它根据Windows ID返回用户信息。这很好,但是我真的希望将此逻辑移到一个模块中,并将db中的每个值分配给一个全局变量,以便在其他地方使用。我希望能够访问父MDI的任何子表单中的联系人id。我已经习惯了PHP,我只是把它分配给一个会话变量,我可以在任何地方引用它 这是我当前的SQL代码 Dim sql_query As String Dim errorMessages As New String

在我的MDI父对象Me_Load中,我有一个SQL查询,它根据Windows ID返回用户信息。这很好,但是我真的希望将此逻辑移到一个模块中,并将db中的每个值分配给一个全局变量,以便在其他地方使用。我希望能够访问父MDI的任何子表单中的联系人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")

您已经在类中声明了4个变量,它们是该类的私有变量。在这一点上,您的代码可以正常工作。Hilight这4个变量声明并剪切它们。您的代码显示错误,因为您刚刚删除了声明

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

将Dim更改为公共

你的错误消失了


您的变量现在是公共的,并且在整个解决方案中都可用。

您在vb.net中研究过持久会话吗?你试过什么?您已经进行了SQL查询并提供了该查询,但它与您的问题无关。@Litty我正在尝试在我的应用程序中的任何其他位置访问say User\u ID。有什么想法吗?当然有。我会说你谷歌“vb.net全局变量”和;)@利蒂:是的,我已经读了好几遍了。。我不知道如何初始化SQL查询,然后将该变量分配给公共变量。这就是我的问题。你说
我有一个返回用户信息的SQL查询,
,而且
效果很好
。听起来好像你在试图找出如何在全局变量中存储信息。查询与此无关。