You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Framework Web应用登录功能SQL语法错误求助

问题解决

1. 语法错误根源

Table是SQL的保留关键字,直接用作表名会导致SQL语法解析失败,这就是报错Incorrect syntax near the keyword 'Table'的核心原因。

2. 修复步骤

(1)修正SQL表名引用

如果你的表名确实是Table,需要用方括号包裹保留关键字:

INSERT INTO [Table] (username, password) VALUES (@username, @password)

更推荐给表起一个有业务意义的名称(比如Users),彻底避免使用保留关键字,修改后SQL语句:

INSERT INTO Users (username, password) VALUES (@username, @password)

(2)修正登录功能的逻辑错误

注意:当前代码是插入新用户数据,但这与登录功能的逻辑完全不符。登录功能的正确逻辑是查询数据库中是否存在匹配的用户名和密码,示例代码如下:

protected void loginbtn_Click(object sender, EventArgs e)
{
    string conn = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";

    using (SqlConnection connection = new SqlConnection(conn))
    {
        // 登录验证的查询语句
        string query = "SELECT COUNT(*) FROM Users WHERE username = @username AND password = @password";

        using (SqlCommand cmd = new SqlCommand(query, connection))
        {
            cmd.Parameters.AddWithValue("@username", unametxt.Text);
            cmd.Parameters.AddWithValue("@password", passwordtxt.Text);

            connection.Open();
            int count = (int)cmd.ExecuteScalar();
            
            if (count > 0)
            {
                // 登录成功,跳转到主页或执行其他逻辑
                Response.Redirect("Home.aspx");
            }
            else
            {
                // 登录失败,提示用户
                lblMessage.Text = "用户名或密码错误";
            }
        }
    }

    unametxt.Text = "";
    passwordtxt.Text = "";
}

(3)额外安全建议

  • 禁止明文存储密码,必须使用哈希算法(如BCrypt、SHA256)对密码加密后再存入数据库。
  • 避免使用AddWithValue,推荐用Add方法指定参数类型,防止潜在的类型转换问题:
    cmd.Parameters.Add("@username", SqlDbType.NVarChar, 50).Value = unametxt.Text;
    cmd.Parameters.Add("@password", SqlDbType.NVarChar, 100).Value = passwordtxt.Text;
    

内容的提问来源于stack exchange,提问作者mir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:20:04