如何在asp.net页面中将数据插入MySQL数据库?

时间:2011-01-23 07:41:00

标签: asp.net mysql sql-server vb.net

我正在尝试使用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)

2 个答案:

答案 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 (?,?)"

我不确定数据库驱动程序如何处理参数,但我认为它们应该是未命名的。