我正在尝试使用MySQL 5和asp.net 4
我成功链接并显示来自MySQL DB的数据,但问题出在DML命令中!!
请查看我的代码
Imports System.Data.SqlClient
Imports MySql.Data.MySqlClient
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MyConnection As String = "server=localhost;User Id=root;password=123;database=cms"
Dim Connection As New MySqlConnection(MyConnection)
Connection.Open()
Dim Sql As String = "INSERT INTO [CMS.tbimages] ( Title,Description) VALUES (parm2,parm3);"
Dim cmd As New MySqlCommand(Sql, Connection)
cmd.Parameters.Add(New MySqlParameter("parm2", "hajjaj"))
cmd.Parameters.Add(New MySqlParameter("parm3", "hajjaj"))
cmd.ExecuteNonQuery()
cmd.Connection.Close()
End Sub
End Class
我所做的是一个用于测试insert命令的简单页面,当我点击它时我添加了一个按钮它应该执行insert命令!!
但是当我点击它时它会给我一个错误:
#42000您的SQL语法有错误;检查手册 对应于您的MySQL服务器 用于正确语法的版本 '[CMS.tbimages]附近( 标题,描述)价值观 第1行(parm2,parm3)'
不是:我尝试了许多其他方法来更改插入语句:
“INSERT INTO [tbimages]([Title],[Description])VALUES(?,?)”
“插入[tbimages]([标题],[描述])
价值观(?标题,?描述)“
INSERT INTO [tbimages]([Title],[Description])VALUES(Title,Description)
答案 0 :(得分:3)
试试这个:
Dim Sql As String = "INSERT INTO CMS.tbimages ( Title,Description) VALUES (?parm2,?parm3);"
Dim cmd As New MySqlCommand(Sql, Connection)
cmd.Parameters.Add(New MySqlParameter("?parm2", "hajjaj"))
cmd.Parameters.Add(New MySqlParameter("?parm3", "hajjaj"))
此外,this教程可能会有所帮助。
答案 1 :(得分:1)
MySQL不使用标识符括号,它使用反引号:
Dim Sql As String = "INSERT INTO `CMS.tbimages` (Title,Description) VALUES (?,?)"
如果表名没有引起任何冲突,则不需要将其括在反引号中:
Dim Sql As String = "INSERT INTO CMS.tbimages (Title,Description) VALUES (?,?)"
我不确定数据库驱动程序如何处理参数,但我认为它们应该是未命名的。