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 并且在您的整个解决方案中可用。
在我的 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 并且在您的整个解决方案中可用。