【发布时间】:2015-01-02 16:23:12
【问题描述】:
我正在尝试在我的应用程序中创建一个搜索框,为此我需要修改 SqlDataSource.SelectCommand。我将不胜感激!
为了测试我是这样做的,它可以工作,但它很容易被 sql 注入攻击
SqlDataSource1.SelectCommand = "sp_offer_search '" + txtSearch.Text + "', " + Session["customerId"] + " , '" + "Pending"+ "'";
GridView1.DataBind();
这是我迄今为止尝试过的,但它不起作用:
if (txtSearch.Text != "")
{
//open connection
oCn.Open();
SqlCommand com = new SqlCommand(query, oCn);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@Variable", txtSearch.Text);
com.Parameters.AddWithValue("@CustomerId",Session["customerId"]);
com.Parameters.AddWithValue("@Status", txtStatus.Text);
DataTable dt = new DataTable();
dt.Load(com.ExecuteReader());
SqlDataSource1.SelectCommand = dt.ToString();
GridView1.DataBind();
}
【问题讨论】:
-
它现在究竟是如何工作的?您是否收到错误、不正确的退货或没有退货?还有什么?
-
它不返回任何东西,就像它没有找到匹配一样
-
您应该查看Can we stop using AddWithValue() already? 并停止使用
.AddWithValue()- 它可能会导致意想不到和令人惊讶的结果... -
Marc_s 谢谢你的举手。我不知道。
标签: c# sql sql-server sqldatasource