ASP.NET中INSERT INTO语句中的语法错误

时间:2011-12-06 12:26:42

标签: asp.net sql

以下是查询:

INSERT INTO `users` (username, password, email) VALUES ('testu', 'testp', 'teste')

我使用以下VB代码(ASP)收到此错误:

    username = Request.Form("username")
    password = Request.Form("password")
    email = Request.Form("email")

    Dim conn As OleDbConnection = New OleDbConnection(GetConnectionString())
    Dim comm As OleDbCommand = New OleDbCommand("INSERT INTO users (username, password, email) VALUES ('" & username & "', '" & password & "', '" & email & "')", conn)

    conn.Open()
    comm.ExecuteNonQuery()

这句话有什么问题?我知道连接字符串是正确的,因为我在其余的应用程序中都使用过它。

2 个答案:

答案 0 :(得分:2)

同意!始终使用参数(准备好)查询并哈希密码。阅读SO帖子 - Salting Your Password: Best Practices?

 Dim conn As OleDbConnection = New OleDbConnection(GetConnectionString())
 Dim comm As OleDbCommand = New OleDbCommand("INSERT INTO users (username, [password], email) VALUES (@username,@password,@email)",conn)
 comm.Parameters.Add("@username",OleDbType.Varchar,30).Value=username
 ....

答案 1 :(得分:1)

不要将参数传递给带有连接的SQL命令!这是SQL注入攻击的一种开放方式。

您应该使用占位符作为参数,并使用comm.AddParameter()添加实际值。

至于你的错误 - 我希望你的一些参数值包含一个引号(')。