Mysql 无法将值插入数据库

Mysql 无法将值插入数据库,mysql,vb.net,Mysql,Vb.net,让我的VB.net应用程序在我的MySQL中插入值时遇到问题。我可以连接到数据库,但不能插入值。我已经下载了DLL并将其作为参考附件。我还编写了查询,并将其直接插入数据库中,它可以正常工作。我从这个网站上找到的例子中尝试了多种编码方法,但我仍然无法让它工作。这是我正在努力工作的代码: Try MysqlConn = New MySqlConnection("server=localhost;userid=User;password=******;database=Targets") Mysq

让我的VB.net应用程序在我的
MySQL
中插入值时遇到问题。我可以连接到数据库,但不能插入值。我已经下载了DLL并将其作为参考附件。我还编写了查询,并将其直接插入数据库中,它可以正常工作。我从这个网站上找到的例子中尝试了多种编码方法,但我仍然无法让它工作。这是我正在努力工作的代码:

Try

MysqlConn = New MySqlConnection("server=localhost;userid=User;password=******;database=Targets")

MysqlConn.Open()

            Dim sqlCommand As New MySqlCommand

            sqlCommand.CommandType = CommandType.Text

            sqlCommand.CommandText = "insert into Victims(UserName, Machine, IP) values('" + strUser + "','" + strMachine + "','" + strIPAddress + "')"

            Dim strRD As MySqlDataReader

            strRD = sqlCommand.ExecuteReader()

            MysqlConn.Close()

            MessageBox.Show("connected")

  Catch ex As MySqlException
            MessageBox.Show("error")

我已经在代码前面声明了查询语句中使用的变量。感谢您提供的帮助。

您可以试试这个

Try

        MysqlConn = New MySqlConnection("server=localhost;userid=User;password=******;database=Targets")

        MysqlConn.Open()

        Dim query as String

        query = "INSERT INTO Victims(UserName, Machine, IP) VALUES('" + strUser + "','" + strMachine + "','" + strIPAddress + "')"

        Dim cmd As MySqlCommand
        cmd = New MySqlCommand(query,MysqlConn)
        cmd.ExecuteNonQuery()
        MysqlConn.Close()
        MessageBox.Show("connected")
Catch ex作为MySqlException MessageBox.Show(“错误”)
结束尝试

您可以尝试此操作

Try

        MysqlConn = New MySqlConnection("server=localhost;userid=User;password=******;database=Targets")

        MysqlConn.Open()

        Dim query as String

        query = "INSERT INTO Victims(UserName, Machine, IP) VALUES('" + strUser + "','" + strMachine + "','" + strIPAddress + "')"

        Dim cmd As MySqlCommand
        cmd = New MySqlCommand(query,MysqlConn)
        cmd.ExecuteNonQuery()
        MysqlConn.Close()
        MessageBox.Show("connected")
Catch ex作为MySqlException MessageBox.Show(“错误”) 结束Try

将公共函数InsertVal()作为布尔值

    Dim iReturn As Boolean
    Using MysqlConn As New MySqlConnection(connectionString)
        Using sqlCommand As New MySqlCommand()
            With sqlCommand
                .CommandText = "INSERT INTO Victims (UserName, Machine, IP) VALUES(@User,@Machine,@IP)"
                .Connection = MysqlConn
                .CommandType = CommandType.Text
                .Parameters.AddWithValue("@User", lblDisplayUser.Text)
                .Parameters.AddWithValue("@Machine", lblDisplayMachine.Text)
                .Parameters.AddWithValue("@IP", lblDisplayIP.Text)

            End With
            Try
                MysqlConn.Open()
                sqlCommand.ExecuteNonQuery()
                iReturn = True
            Catch ex As MySqlException
                MsgBox(ex.Message.ToString)
                iReturn = False
            Finally
                MysqlConn.Close()
            End Try
        End Using
    End Using

    Return InsertVal
这就是对我有效的解决方案。我不得不把它改成一个函数,然后处理详细的错误消息。谢谢大家的帮助。

布尔形式的公共函数InsertVal()

    Dim iReturn As Boolean
    Using MysqlConn As New MySqlConnection(connectionString)
        Using sqlCommand As New MySqlCommand()
            With sqlCommand
                .CommandText = "INSERT INTO Victims (UserName, Machine, IP) VALUES(@User,@Machine,@IP)"
                .Connection = MysqlConn
                .CommandType = CommandType.Text
                .Parameters.AddWithValue("@User", lblDisplayUser.Text)
                .Parameters.AddWithValue("@Machine", lblDisplayMachine.Text)
                .Parameters.AddWithValue("@IP", lblDisplayIP.Text)

            End With
            Try
                MysqlConn.Open()
                sqlCommand.ExecuteNonQuery()
                iReturn = True
            Catch ex As MySqlException
                MsgBox(ex.Message.ToString)
                iReturn = False
            Finally
                MysqlConn.Close()
            End Try
        End Using
    End Using

    Return InsertVal


这就是对我有效的解决方案。我不得不把它改成一个函数,然后处理详细的错误消息。谢谢大家的帮助。

您是否收到任何错误消息?另外,您是否可以使用
ExecuteNonQuery()
替代此选项查看此选项(向下滚动以获得有效的解决方案)。ExecuteReader用于返回多行的结果。ExecuteOnQuery用于不返回结果的查询。您是否收到任何错误消息?另外,您是否可以使用
ExecuteOnQuery()
代替此选项查看此选项(向下滚动以获得有效的解决方案)。ExecuteReader用于返回多行结果。ExecuteOnQuery用于不返回结果的查询。您是否收到任何错误消息?另外,您是否可以使用
ExecuteOnQuery()
代替此选项查看此选项(向下滚动以获得有效的解决方案)。ExecuteReader用于返回多行结果。ExecuteOnQuery用于不会返回结果的查询。感谢您的帮助。我使用了你的代码,它做的和以前一样。我可以连接应用程序,但不能插入值。我看到它是通过在mysql中运行“showProcessList;”连接的,它显示了一个新的睡眠连接。我猜这意味着代码没有到达代码的MysqlConn.Close()部分。我在尝试插入值时收到错误消息框。错误消息是什么?像无效的字段值之类的?谢谢你的帮助。我使用了你的代码,它做的和以前一样。我可以连接应用程序,但不能插入值。我看到它是通过在mysql中运行“showProcessList;”连接的,它显示了一个新的睡眠连接。我猜这意味着代码没有到达代码的MysqlConn.Close()部分。我在尝试插入值时收到错误消息框。错误消息是什么?像无效的字段值之类的?谢谢你的帮助。我使用了你的代码,它做的和以前一样。我可以连接应用程序,但不能插入值。我看到它是通过在mysql中运行“showProcessList;”连接的,它显示了一个新的睡眠连接。我猜这意味着代码没有到达代码的MysqlConn.Close()部分。我在尝试插入值时收到错误消息框。错误消息是什么?比如无效的字段值或其他什么?为了更好地澄清这一点,请记住,当使用字符串而不是参数时,查询字符串的字符都会被使用。例如,从myDB中选择*其中用户名为“Larry O'Hare”,将通过解析额外的“字符”导致语句出现问题。。。使用参数解决了这个问题,同时帮助阻止黑客使用SQL注入之类的东西。为了更好地澄清这一点,请记住,当使用字符串而不是参数时,查询字符串的字符都会被使用。例如,从myDB中选择*其中用户名为“Larry O'Hare”,将通过解析额外的“字符”导致语句出现问题。。。使用参数解决了这个问题,同时帮助阻止黑客使用SQL注入之类的东西。为了更好地澄清这一点,请记住,当使用字符串而不是参数时,查询字符串的字符都会被使用。例如,从myDB中选择*其中用户名为“Larry O'Hare”,将通过解析额外的“字符”导致语句出现问题。。。使用参数解决了这个问题,同时帮助阻止黑客使用SQL注入之类的东西。