0

我有一个内置在 ASP.NET 中的搜索表单,它有一个下拉列表,用于确定要从哪个表中搜索。两个表的结构相似,只是列名不同的地方,所以我把每个表的信息放在一个单独的表中。它基本上是这样设置的:

名称|表单字段名称|表格名称|表格列名称

从那里我设置了一个循环,它将根据下拉列表中的选择保存表单字段名称、表名称和列名称。循环将获取该信息并根据用户的输入使用 StringBuilder 构建单独的 MySQL 查询。这是循环:

If drFields.HasRows Then
    While drFields.Read()
        If drFields("ASPControlName") <> "" Then
            If strbQuery.ToString <> "" Then
                strbQuery.Append(" AND ")
            End If
            strbQuery.Append(" " & drFields("DBField") & " LIKE '%" & drFields("ASPControlName").ToString & "%' ")
        End If
    End While
End If

我的问题,我相信你可以说,drFields("ASPControlName"),它充满了 txtFirstName.Text.Trim 的内容,只会出现 txtFirstName.Text.Trim 的字符串在里面。该变量不会像我想要的那样转换为引用文本框。

我知道这可能是一种倒退的方式,但它甚至有可能实现我想要的吗?谢谢!

4

1 回答 1

0

我知道这可能是一种倒退的方式

非常真实。我不会继续这条路线。

但它甚至有可能实现我想要的吗?

是的,您可以使用反射来获取控件并调用您需要的属性以接收实际值,但由于这根本不是一个好方法,所以我不会提供示例。

此外,像您描述的那样构建动态查询需要特殊处理,以确保您不会将自己暴露在 SQL 注入攻击中。尝试重新考虑这里的策略。

很难建议对您有用的东西,因为我认为问题中没有足够的上下文,但通常,我会选择创建一个存储过程,该过程将根据某些参数执行我需要的查询。

一些可能有用的资源:

于 2012-08-01T17:58:21.070 回答