1

我有一个关于 ASP.NET 和 SQL Server 数据库以及使用 Visual Studio 2010 的问题。问题是关于登录控件 cs 部分。

我将表单与数据库链接,需要将登录名和密码与数据库中的登录名和密码进行比较,但是行

SqlDataReader rdr = com.ExecuteReader(); 

表示“用户”附近的语法有错误

是查询问题吗?

你能帮我吗?

private bool UserLogin(string userName, string password)
{
    // read the coonection string from web.config 
    string conString = ConfigurationManager.ConnectionStrings["MidLinData"].ConnectionString;

    using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString))
    {
        con.Open();
        //' declare the command that will be used to execute the select statement 
       // SqlCommand com = new SqlCommand("SELECT login FROM user WHERE userName = @login AND Password = @password", con);
        SqlCommand com = new SqlCommand("SELECT login FROM user WHERE userName = @login ", con);
        SqlCommand com2 = new SqlCommand("SELECT password FROM user WHERE password = @password ", con);
        // set the username and password parameters
        com.Parameters.Add("@login", SqlDbType.NVarChar).Value = userName;
        SqlDataReader rdr = com.ExecuteReader();
        //com.Parameters.Add("@password", SqlDbType.NVarChar).Value = password;
        string result = rdr[0].ToString();

        // execute the select statment 
        //  string result = Convert.ToString(com.ExecuteScalar());
        //' check the result 
        if (string.IsNullOrEmpty(result))
        {
            //invalid user/password , return flase 
            return false;
        }
        else
        {
            // valid login
            return true;
        } 

        return true;
    }
}

编译器说:

“/visualStudioWebsite”应用程序中的服务器错误。

关键字“用户”附近的语法不正确。

说明:执行当前 Web 请求期间发生未处理的异常。

请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:关键字“用户”附近的语法不正确。

源错误:

Line 57: // 设置用户名和密码参数
Line 58: com.Parameters.Add("@login", SqlDbType.NVarChar).Value = userName;
第 59 行:SqlDataReader rdr = com.ExecuteReader();
第 60 行:com.Parameters.Add("@password", SqlDbType.NVarChar).Value = 密码;
第 61 行:

源文件:c:\Users\annasolovjova\Desktop\visualStudioWebsite\login.aspx.cs 行:59

4

2 回答 2

0

您可以像这样组合这两个命令:

SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "SELECT login, password FROM user WHERE userName = @login and password = @password";
com.Parameters.AddWithValue("login", userName); 
com.Parameters.AddWithValue("password", password);
于 2013-10-30T23:02:34.927 回答
0

user是 SQL Server 中的保留关键字——最好不要将其用作表名!如果你坚持使用它,你必须把它放在方括号中:

SqlCommand com = new SqlCommand("SELECT login FROM [user] WHERE userName = @login ", con);
于 2015-07-28T19:39:01.707 回答