根据文本框文本设置 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注入,可以改用参数。并使用从查询字符串中获取的值。
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#