我正在尝试使用 ASP.NET 创建一个登录字段,该字段将从文本框字段中获取输入,并根据我的数据库中的“用户”表检查它们。这些列是 User ID
和 Password
。但是一个错误
System.Data.SqlClient.SqlException: 'Incorrect syntax near '`'
在使用登录表单时出现。我看不出语法有任何问题...
我是新手,如果错误很明显,请原谅!
public partial class Login_Page : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblErrorMessage.Visible = false;
SqlConnection con = new SqlConnection("Data Source=JACKS-PC\\SQLEXPRESS;Initial Catalog=CBR;Integrated Security=True");
con.Open();
}
protected void btnLogin_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=JACKS-PC\\SQLEXPRESS;Initial Catalog=CBR;Integrated Security=True";
con.Open();
string userid = txtUsername.Text.Trim();
string password = txtPassword.Text.Trim();
SqlCommand cmd = new SqlCommand("select `user id`,`password` from user where `user id`='" + txtUsername.Text + "'and `password`='" + txtPassword.Text + "'", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
Session["username"] = txtUsername.Text.Trim();
Response.Redirect("Homepage.aspx");
}
else
{
lblErrorMessage.Visible = true;
}
con.Close();
}
}
最佳答案
只需删除“`”字符即可。
您的代码容易受到注入(inject)尝试使用
SqlCommand.Parameters.Add()
方法添加值。
使用此代码:
SqlCommand cmd = new SqlCommand("select userid, password from user where user id = @id and password = @password", con);
cmd.Parameters.Add("@id", SqlDbType.VarChar).Value = txtUsername.Text;
cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = txtPassword.Text;
正如@marc_s 提到的,user id
不是一个有效的列名,它应该像 userid
或者如果它有空格,它应该像:[用户名]
关于c# - System.Data.SqlClient.SqlException : 'Incorrect syntax near ' `'.' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54843315/