根据文本框文本设置 SQL 命令

本文关键字:文本 SQL 命令 设置 | 更新日期: 2023-09-27 17:56:24

我有以下网格视图选择命令 -

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

运行时,它将所需的结果带回网格视图,但是我从上一页传递一个字符串值来填充文本框,并且在页面加载时希望网格视图SelectCommand由该字符串确定。

所以像这样——

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
SelectCommand="SELECT [columnA] FROM [DB].[dbo].[TABLE] WHERE value = <%TextBox1.Text%>

但是,这不是在页面加载时选取字符串值。

根据文本框文本设置 SQL 命令

这种查询容易出现SQL注入,可以改用参数。并使用从查询字符串中获取的值。

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

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

这可以通过多种方式完成,尽管您不再需要文本框,因为您需要的值是使用 Querystring 传入的。所以给这个抨击(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#,请使用此链接:将 VB.NET 转换为 C#