【发布时间】:2020-08-17 20:36:42
【问题描述】:
我正在尝试使用 ASP.NET 使用来自两个不同表的值登录,但我收到此错误:
“=”附近的语法不正确
代码:
protected void Button1_Click1(object sender, EventArgs e)
{
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("Select Company_Master.Company_Code ='" + TextBox1.Text + "',Employee_Master.Emp_ID ='" + TextBox2.Text + "',Employee_Master.Emp_Pass ='" + Password1.Text + "' from Company_Master, Employee_Master where Company_Master.Company_Code = Employee_Master.Company_Code;");
cmd.Connection = conn;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
cmd.ExecuteNonQuery();
sda.Fill(ds, "Company_Master,Employee_Master");
if (ds.Tables[0].Rows.Count > 0)
{
Label1.Text = "sign up done";
}
else
{
Label1.Text = "wrong login";
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
【问题讨论】:
-
嗨。阅读有关 SQL 注入的信息:w3schools.com/sql/sql_injection.asp。它不会解决这个问题,但它会在未来防止许多其他更严重的问题。
-
过滤器应该在 where 子句中,而不是在 select 中。请使用参数来防止各种问题。并使用明确的“加入”子句
-
另外,你为什么要执行你的查询三次?
sda.Fill(dt);,然后是cmd.ExecuteNonQuery();(这对于 返回数据的SELECT查询完全没有意义),然后第三次使用sda.Fill(ds, "Company_Master,Employee_Master");..... 一次.Fill()相当就够了!
标签: sql asp.net sql-server