【发布时间】:2018-02-21 07:08:07
【问题描述】:
我整天都在寻找适合我情况的解决方案。我发现了一些非常相似但不适用于我的情况的东西,我试过了。
这是场景;我有两个表底和部分细节。我有一个 asp 网站(仅限内部),它有下拉列表来选择填充数据网格视图的 SQL 查询的参数。
我的问题是这样的,我需要能够根据页面上的下拉列表框,指定要搜索的输入条件的列名。
这是我试图定义的查询:(这个返回 0 行)
sqlCmd.CommandText = ("Select ba.referenceid, ba.partnum, pd.width, pd.length, CONVERT(varchar(12), pd.dateentered, 101) As [dateentered], ba.partqty, ba.status, ba.material From tbl_dlbase ba Join tbl_partdetails pd On ba.referenceid = pd.referenceid Where Case @field1 When 'part #' Then 'ba.partnum' When 'Spacing' Then 'pd.spacing' When 'Surface' Then 'pd.surface' When 'Height' Then 'pd.height' When 'Thickness' Then 'pd.thickness' End Like '%' + @criteria1 + '%'")
sqlCmd.Parameters.AddWithValue("@field1", ddlSc1.SelectedItem.Text)
sqlCmd.Parameters.AddWithValue("@criteria1", txbCriteria1.Text)
这是我尝试过的最新版本的 SQL 语句。我需要能够根据从 asp 页面上的下拉列表 ddlsc1 中的选择来设置字段/列名称。
我也一直在尝试 Studio manager 中的查询,看看我是否有粗心大意的东西,但它也返回 0 行,所以我知道查询有问题。
那么如何使用名称参数设置列名称字段。我知道这是 SQL 注入的一个巨大安全问题,但这是一个仅限内部的站点,更重要的是我的老板说他希望使用变量来完成。
【问题讨论】:
-
考虑到我使用变量作为名称,我认为它是动态的。那究竟什么是动态 SQL?
-
这里不需要动态,从您当前查询的外观来看,我认为您不知道自己需要什么。
-
"我整天都在寻找适合我情况的解决方案。我发现了一些非常相似但不适用于我的情况的东西,我试过了。" 嗯,如果这是真的,您似乎已经知道动态 SQL 是什么(这是互联网上非常常见的请求)。请向我们展示您已经尝试过的“不适用于我的情况”的方法。
标签: asp.net sql-server vb.net tsql