【发布时间】:2021-03-11 10:56:07
【问题描述】:
我有一个包含多个选择值的列表框。我正在尝试从员工表中获取数据。根据此 ListBox 中的值,我尝试在语句中使用。我检查了查询,它是真的,但仍然没有获取任何数据而没有任何错误。
代码如下:
StringBuilder sb = new StringBuilder("SELECT * FROM Emp_Attend LEFT JOIN Employees on Emp_Attend.Emp_ID = Employees.EmpID WHERE ");
StringBuilder sb = new StringBuilder("SELECT * FROM Emp_Attend LEFT JOIN Employees on Emp_Attend.Emp_ID = Employees.EmpID WHERE ");
using (SqlCommand cmdSQL = new SqlCommand())
{
sb.Append("Emp_Attend.Emp_Name IN (");
string InPartQuery = string.Join(",", ListBox1.Items
.Cast<ListItem>()
.Where(t => t.Selected)
.Select(r => "'" + r.Text + "'"));
sb.Append(InPartQuery);
sb.Append(")");
cmdSQL.CommandText = sb.ToString();
cmdSQL.Connection = sqlcon;
SqlDataAdapter da = new SqlDataAdapter(cmdSQL);
DataTable dtbl = new DataTable();
da.Fill(dtbl);
sqlcon.Close();
gvEmployees.DataSource = dtbl;
gvEmployees.DataBind();
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看 Little Bobby Tables
-
我看不到你的 connection.open();部分。您可以检查您的代码与此答案进行比较。 stackoverflow.com/a/6073545/8352989
标签: c# asp.net sql-server webforms