【发布时间】:2018-10-25 15:39:52
【问题描述】:
我试图从基于 sql 的用户输入中检索行数并在 gridview 中显示
请帮忙!
Int32 text = Convert.ToInt32(this.Txtusers.Text);
con.Open();
cmd = new SqlCommand("select TOP '" + text + "' * from Avaya_Id where LOB = '" + DDLOB.SelectedItem.Value + "' and Status = 'Unassigned'", con);
SqlDataReader rdr = cmd.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();
con.Close();
【问题讨论】:
-
打印
cmd并将其包含在问题中。 -
SELECT TOP '2' ...应该是SELECT TOP 2 ...(不带引号) -
以错字结尾
-
1.
TOP需要一个数字,但您将text设置在单引号中。 2.您的代码对SQL Injection开放。请使用参数化查询,而不是将用户输入直接放入查询字符串! -
如果您使用sql-server,您可以将参数参数化为
TOP,如C# SQL Top as parameter 和Dynamic SELECT TOP @var In SQL Server 所示。另请参阅Why do we always prefer using parameters in SQL statements?,了解为什么应始终使用参数化 SQL 查询,而不是使用用户输入直接构造查询。