根据textBox文本设置SQL命令

时间:2013-01-29 11:47:29

标签: c# asp.net sql gridview

我有以下gridView选择命令 -

SelectCommand="SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = 1

运行时会将所需的结果带回gridview,但是我从前一页传递一个字符串值来填充textBox,并且在页面加载时希望gridview SelectCommand由该字符串确定。 / p>

类似于 -

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

SelectCommand="SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = <%TextBox1.Text%>

但是,这并没有在页面加载时获取字符串值。

2 个答案:

答案 0 :(得分:0)

上面的评论都是正确的,这种方法确实让你接触到SQL注入......但回答你的问题:

这可以通过多种方式完成,但您不再需要文本框,因为您需要使用Querystring传递所需的值。所以给它一个bash(VB.Net):

Protected Sub Page_Load(sender as Object, e as System.EventArgs) Handles Me.Load

  Dim myString As String = Request.Querystring("NameOfQuerystring")

  ' Call Sub and pass in value
  GenerateOutput(myString)

End Sub


Sub GenerateOutput(ByVal DBValue As String)

  'Perform Database call using the DBValue

  SelectCommand = "SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = " & DBValue

End Sub

如果您想将此转换为C#,请使用以下链接:Convert VB.NET to C#

答案 1 :(得分:0)

这种查询很容易SQL Injection,您可以使用参数代替。并使用从QueryString中获得的值。

SqlCommand comm = new SqlCommand();
comm.CommandText = "SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = @value";
comm.Parameters.AddWithValue("value", Request.QueryString["string"]);