将窗口表单数据从文本和组合框插入到mysql数据库中

时间:2013-02-05 14:35:42

标签: mysql vb.net winforms

我正在开发一个允许用户通过表单添加公司的应用程序。我很难在INSERT查询中将数据插入MySQL数据库。查询是合理的,因为它在直接应用时会起作用,但是应用程序不会提交...这里是我的代码......

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

           sqlconnection.Close()

Dim com As New MySqlCommand("INSERT INTO companies VALUES(company_id, '" & TextBox1.Text & "', '" & RichTextBox1.Text & "', '" & TextBox4.Text & "', '" & TextBox5.Text & "', '" & ComboBox6.Text & "', '" & TextBox2.Text & "', '" & TextBox7.Text & "', '" & TextBox3.Text & "', '" & ComboBox2.Text & "', '" & RichTextBox3.Text & "', '" & ComboBox5.Text & "', '" & RichTextBox2.Text & "', '" & ComboBox7.Text & "', '" & ComboBox1.Text & "', '" & ComboBox4.Text & "';", con)

        con.Open()

        com.ExecuteNonQuery()

        con.Close()

        MsgBox("committed")

提前致谢

1 个答案:

答案 0 :(得分:-1)

这就是你不使用参数化查询所得到的 可能在一个或多个文本框或richtextbox中,撇号会导致字符串连接混淆所有内容。
假设TextBox1包含'Acme's Inc.'。现在您的字符串查询文本变为

INSERT INTO companies VALUES (company_id, 'Acme's Inc.', 
                                               ^

查看盲目字符串连接引起的语法错误?

我不能在这里写一个完整的代码替换,因为这么多控件都有不同的名称。但是你应该写这样的东西

Dim cmdText = "INSERT INTO companies VALUES (@companyID, @param1, @param2, ....etc")
Dim com as New MySqlCommand(cmdText, con)
com.Parameters.AddWithValue("@companyID", company_id)
com.Parameters.AddWithValue("@param1", textbox1.Text)
.... 'and so on'
con.Open()
com.ExecuteNonQuery()

除了引用问题,正确表示基础数据库系统的日期和十进制数之外,还有另一个大问题。 SQL Injection(这只是一个有启发性的链接,因为SQL注入是一个非常大的主题)

最后

永远不要使用字符串连接来构建SQL查询。