我想显示一个数据网格,它将根据我的搜索按钮中的查询返回记录,但每当我点击搜索按钮时,它都会返回数据库中的所有记录。
HTML 的
<html>
<asp:TextBox ID="ClientCode" runat="server"></asp:TextBox>
<asp:GridView ID="ClientDataGrid" runat="server" Height="111px"
Width="202px" Visible="False"></asp:GridView>
C#
private void rep_bind()
{
connection();
string query = ""select * from client where client_code ='" +
ClientCode.Text + "'";
SqlDataAdapter da = new SqlDataAdapter(query, con);
DataSet ds = new DataSet();
da.Fill(ds);
ClientDataGrid.DataSource = ds;
ClientDataGrid.DataBind();
}
private void InitializeComponent()
{
}
protected void search_Click(object sender, EventArgs e)
{
Label1.Text = "";
connection();
string query = string.Format("select * from client where client_code
='" + ClientCode.Text + "'") ; ;
SqlCommand com = new SqlCommand(query, con);
com.Parameters.Add("@category", SqlDbType.NVarChar, 20).Value =
category.SelectedItem.Text;
SqlDataReader dr;
dr = com.ExecuteReader();
ListItem selectedItem = category.SelectedItem;
if (string.IsNullOrWhiteSpace(ClientCode.Text) &&
string.IsNullOrWhiteSpace(ClientName.Text))
{
ClientDataGrid.Visible = false;
Label1.Visible = true;
Label1.Text = "Please Enter Correct Search Values";
}
else if (dr.HasRows)
{
dr.Read();
rep_bind();
ClientDataGrid.Visible = true;
}
else
{
ClientDataGrid.Visible = false;
}
}
我想显示与文本框上的客户端代码匹配的记录,但它总是返回数据库中的所有记录。
答案 0 :(得分:0)
我无法对实际问题发表评论,所以我会在这里问一下。
您似乎执行了两次相同的查询。一旦看到它是否有任何行,第二次填充数据网格。您可以更改此设置,以便只执行一次查询。
防止SQL注入攻击的一种方法是使用存储过程而不是使用字符串插值直接创建查询。使用存储过程并使用参数传递条件。
这是一个解释如何创建一个
的链接答案 1 :(得分:0)
这个版本怎么样?
{
"project_info": {
"project_number": "000000000000",
"project_id": "****-*****"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": ...,
"android_client_info": {
"package_name": "flavor1.package.name"
}
},
...
},
{
"client_info": {
"mobilesdk_app_id": ...,
"android_client_info": {
"package_name": "flavor2.package.name"
}
},
...
}
],
"configuration_version": "1"
}