Update语句VB.net中的SQL语法错误

时间:2010-03-12 15:11:24

标签: sql vb.net sql-update oledb

我在VB中运行时出现了一个奇怪的语法错误:

        SQLString = "UPDATE Login SET Password = '" + PasswordTextBox.Text + "'"
        SQLString += " WHERE UserName = '" + UserNameTextBox.Text + "'"

在进入此部分之前检查Username,并确定在数据库中。 它给出了一个例外,说明update语句中存在语法错误。任何人都知道什么是错的?

7 个答案:

答案 0 :(得分:5)

LOGIN是SQL Server中的保留字(用于登录帐户管理),因此为了在查询中使用它(即列名),您需要使用[]来转义它,所以使用[LOGIN]作为字段名称。

您永远不应该使用字符串连接并将其传递给SQL数据库,因为您将自己暴露给SQL Injection攻击。

您应该使用SqlCommand对象并传递参数。请参阅this article了解如何操作。

SQLString = "UPDATE [Login] SET Password = @password "
SQLString += " WHERE UserName = @userName"

...

dbCommand.Parameters.Add("@password", SqlDbType.VarChar, 50)
dbCommand.Parameters["@password"].Value = PasswordTextBox.Text

dbCommand.Parameters.Add("@userName", SqlDbType.VarChar, 50)
dbCommand.Parameters["@userName"].Value = UserNameTextBox.Text

答案 1 :(得分:2)

我很确定Login是保留字,请尝试将登录更改为[Login]

答案 2 :(得分:1)

密码是一个保留字,所以[密码]修复它,我的讲师为我修好了:)

答案 3 :(得分:0)

不要显示你是如何构建语句的,而是在执行语句时向我们展示SQLString中的内容。

另外,请尝试将列和表名称括在标识符引号字符中,这些字符对于Microsoft而言是[和],对于许多其他数据库,请在`(在代字号键上)。

答案 4 :(得分:0)

在不知道您使用的实际密码和用户名的情况下,我的猜测是其中一个(或两个)中的某些字符导致sql语句过早结束。你应该在执行像这样的sql时使用参数。

看看这个:http://msdn.microsoft.com/en-us/library/ms998271.aspx

答案 5 :(得分:0)

我同意以前的一些答案,关于使用参数(我给@Oded + 1)和使用带表名和字段名的 [] (我给SQLMenace +1)。

总之,我认为这是启动查询的最正确方法:

using(SqlConnection connection = new SqlConnection("<your connection string>"))
    {
        connection.Open();
        SqlCommand command = new SqlCommand();

        command.Connection = connection;

        command.CommandText = "UPDATE [Login] SET [Password] = @PasswordParameter WHERE [UserName] = @UserNameParameter";
        command.Parameters.AddWithValue("@PasswordParameter", PasswordTextBox.Text);
        command.Parameters.AddWithValue("@UserNameParameter", UserNameTextBox.Text);

        command.ExecuteNonQuery();
    }

答案 6 :(得分:0)

我建议将带有刻度线的单词“login”和“password”包围起来,让处理程序知道它们不会被渲染为保留字。

所以:

更新'登录'SET'密码'

但不是单引号,请使用刻度线(键盘上的左上角键)。我无法正确演示它,因为如果它被刻度线包围,StackOverflow会将它视为一个类。

相关问题