【问题标题】:Updating MySQL database in xampp using Visual Studio or Visual Basic使用 Visual Studio 或 Visual Basic 在 xampp 中更新 MySQL 数据库
【发布时间】:2019-10-05 11:06:10
【问题描述】:

我尝试了我能做的一切——我是编程的初学者。我想使用 VB 或 Visual Studio 在 xampp 中更新我的数据库,但似乎做不到。

这是我的表单代码。:

Imports MySql.Data.MySqlClient
Public Class Form4
    Public MysqlConn As MySqlConnection
    Public cmd As New MySqlCommand
    Public da As New MySqlDataAdapter
    Public Sub MysqlConnection()
        MysqlConn = New MySqlConnection()

        'Connection String
        MysqlConn.ConnectionString = "server=localhost;" _
        & "user id=root;" _
        & "password=;" _
        & "database=bank"

        'OPENING THE MysqlConnNECTION
        MysqlConn.Open()

    End Sub
    Public Sub add()
        Dim sql As String
        Dim TempTable As New DataTable

        sql = "update cbank set Balance = Balance +  " & TextBox2.Text & "where AccountID = " & TextBox1.Text & "and PIN = " & TextBox3.Text & ";"
        'bind the connection and query
        With cmd
            .Connection = MysqlConn
            .CommandText = sql
        End With
        da.SelectCommand = cmd

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MysqlConnection()
        add()

    End Sub

End Class

没有错误只是没有输出也没有

【问题讨论】:

  • 我在您的问题中看不到与 xampp 的连接。它看起来像在 vb.net 代码中使用的纯 ADO.net。 Vb.net 是编程语言。 Visual Studio 是一个集成开发环境 (IDE),您可以在其中使用多种不同的语言进行编码。

标签: mysql vb.net xampp


【解决方案1】:

将数据对象保留在本地,以便确保它们已关闭和处置。即使出现错误,Using...End Using 块也能确保这一点。您可以将连接字符串设置为表单级变量,这样您就可以在任何地方使用它,但这是您需要的唯一表单级变量。

您可以将连接字符串直接传递给连接的构造函数。

您可以将您的 sql 命令文本和连接直接传递给命令的构造函数。

请始终使用参数。它不仅可以使您避免使用错误的引号,还可以帮助确保将正确的数据类型发送到数据库。最重要的是它有助于保护您的数据库免受可能破坏您的数据库的 sql 注入。我不得不猜测您数据库中的数据类型。检查数据库并相应地调整代码。

Private ConnString As String = "server=localhost;user id=root;password=;database=bank"
Private Sub add()
    Using cn As New MySqlConnection(ConnString)
        Using cmd As New MySqlCommand("update cbank set Balance = Balance + @Balance where AccountID = @ID and PIN = @PIN;", cn)
            cmd.Parameters.Add("@Balance", MySqlDbType.Decimal).Value = CDec(TextBox2.Text)
            cmd.Parameters.Add("@ID", MySqlDbType.Int32).Value = CInt(TextBox1.Text)
            cmd.Parameters.Add("@PIN", MySqlDbType.Int32).Value = CInt(TextBox3.Text)
            cn.Open()
            cmd.ExecuteNonQuery()
        End Using
    End Using
End Sub

【讨论】:

  • 哇,非常感谢这解决了我的问题,所以我认为发生的事情是我没有使用参数,我的代码上发生了什么之前是有 sql 注入并且语言不明白我的命令是什么为什么它没有更新但现在它正在工作......从现在开始以供将来使用 imma 继续使用参数来执行 sql 命令继续前进 tnx 以获得帮助
【解决方案2】:

行情问题。

Imports MySql.Data.MySqlClient
Public Class Form4
    Public MysqlConn As MySqlConnection
    Public cmd As New MySqlCommand
    Public da As New MySqlDataAdapter
    Public Sub MysqlConnection()
        MysqlConn = New MySqlConnection()

        'Connection String
        MysqlConn.ConnectionString = "server=localhost;" _
        & "user id=root;" _
        & "password=;" _
        & "database=bank"

        'OPENING THE MysqlConnNECTION
        MysqlConn.Open()

    End Sub
    Public Sub add()
        Dim sql As String
        Dim TempTable As New DataTable

        sql = "update cbank set Balance = Balance +  " & TextBox2.Text & "where AccountID = " & TextBox1.Text & "and PIN = " & TextBox3.Text & ";"
        bind the connection and query
        With cmd
            .Connection = MysqlConn
            .CommandText = sql
        End With
        da.SelectCommand = cmd

    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Me.Hide()
        Form2.Show()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MysqlConnection()
        add()

    End Sub

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

    End Sub
End Class

【讨论】:

  • 永远不要鼓励新用户连接 SQL 语句。始终使用参数。你有 Sql 注入的风险。
猜你喜欢
  • 2019-10-25
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多