【问题标题】:Remote database connection in VB.net not workingVB.net 中的远程数据库连接不起作用
【发布时间】:2017-11-16 10:07:53
【问题描述】:

我目前正在我的 VB.net 应用程序中处理 MySQL 连接。我有一个包含以下代码的表单:

Imports System.Data
Imports System.Data.SqlClient

Public Class Form4
    Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    ConnectToSQL()
End Sub

Private Sub ConnectToSQL()
    Dim con As New SqlConnection
    Dim cmd As New SqlCommand
    Dim Password As String
    Dim Password2 As String
    Dim userName As String

    Try
        If con.ConnectionString = "Network Library=DBMSSOCN;""Data Source=myserver,1433;""Initial Catalog=users;""User ID=myuser;password=mypass;" Then
            con.Open()

            cmd.Connection = con
            cmd.CommandText = "SELECT user_username, user_pass FROM users WHERE (user_username = '" & txtUsername.Text & "' ) AND (user_pass = '" & txtPassword.Text & "')"

            Dim lrd As SqlDataReader = cmd.ExecuteReader()
            If lrd.HasRows Then
                While lrd.Read()

                    Password = lrd("Password").ToString()
                    userName = lrd("UserName").ToString()

                    Password2 = txtPassword.Text()

                    If Password = Password2 And userName = txtUsername.Text Then

                        MessageBox.Show("Logged in successfully as " & userName, "", MessageBoxButtons.OK, MessageBoxIcon.Information
                                        )
                        Form2.Show()
                        Me.Hide()

                        txtPassword.Text = ""
                        txtUsername.Text = ""

                    End If

                End While

            Else
                MessageBox.Show("Username or Password incorrect...", "Authentication Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                txtPassword.Text = ""
                txtUsername.Text = ""
            End If

        End If

    Catch ex As Exception
        MessageBox.Show("Error while connecting to SQL Server." & ex.Message)

    Finally
        con.Close()
    End Try
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Me.Close()
End Sub
End Class

每次运行应用程序时,我都会正确输入登录详细信息并单击登录按钮 (Button2)。问题是,它什么也没做。据我所知,它不会引发异常,甚至不会尝试登录服务器。我用我自己的服务器替换了登录详细信息,所以这不是问题。我错过了什么吗?

【问题讨论】:

  • 你需要使用MySqlClient...

标签: mysql vb.net connection-string


【解决方案1】:

不要以明文形式存储密码!
此外,您的代码容易出现sql incjection

什么都没有发生,因为 If 永远不会是真的:

...
If con.ConnectionString = "Network Library=DBMSSOCN;""Data Source=myserver,1433;""Initial Catalog=users;""User ID=myuser;password=mypass;" Then
...

【讨论】:

  • 我明白了...我已经删除了 If 语句,但现在我收到错误消息:“连接到 SQL Server 时出错。不支持关键字:'数据源'”。
  • 连接字符串似乎一团糟。对于 mysql,它应该类似于 Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;。也不需要加倍的双引号/错误 - 看看this site
  • 现在遇到一个奇怪的异常...“抛出异常:System.Data.dll 中的'System.Data.SqlClient.SqlException'”
  • 您标记了 mysql,但您尝试使用用于 MS SQL Server 的System.Data.SqlClient。这不是例外的全部内容。编辑您的问题并添加您的新连接字符串和整个异常。
猜你喜欢
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多