【问题标题】:Syntax error in Insert query in Mysql in VB.Net在 VB.Net 中的 Mysql 中插入查询中的语法错误
【发布时间】:2015-06-23 15:26:52
【问题描述】:

我在 VB.NET 中做项目,后端是 mysql

你能告诉我错误发生在哪里

Public Sub ins()
    con.Open()
    Dim cmd1 As New OdbcCommand("insert into party values('" + pcode_txt.Text + "','" + Trim(UCase(name_txt.Text)) + "','" + Trim(UCase(addr_txt.Text)) + "','" + phone_txt.Text + "','" + combo_route.SelectedItem + "','" + combo_area.SelectedItem + "'", con)
    cmd1.ExecuteNonQuery()
    con.Close()
End Sub

我得到的错误是:

ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.6.24]你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在第 1 行的 '' 附近使用正确的语法

【问题讨论】:

  • 你得到的错误究竟是什么?
  • 上面给出了我得到的错误
  • 一方面,insert into 也应该是大写字母和值。还取决于您使用的 mysql 版本,调用这样的查询是贬值的。这个我不知道,但是OdbcCommand 看起来不像Mysql。

标签: mysql vb.net


【解决方案1】:

你错过了值列表的右括号:

Dim cmd1 As New OdbcCommand("insert into party values('" + pcode_txt.Text + "','" + Trim(UCase(name_txt.Text)) + "','" + Trim(UCase(addr_txt.Text)) + "','" + phone_txt.Text + "','" + combo_route.SelectedItem + "','" + combo_area.SelectedItem + "')", con)

我的回答非常适合您的问题,但正如 cmets 中所建议的,字符串连接不是构建查询的可靠方式。

更安全的解决方案是基于参数。尽可能避免在应用程序中创建 sql 代码并依赖服务器语句(存储过程和/或视图)。

【讨论】:

  • 虽然这可行,但它对 sql 注入是开放的。考虑到这一点,这是一个糟糕的例子。
  • @OneFineDay 100% 同意。正确的实现是带参数的命令或存储过程
  • 正确但我的项目经理让我不要使用参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多