首页 新闻 搜索 专区 学院

关于SQL参数化的问题

0
[已解决问题] 解决于 2013-02-13 11:05

我有一个业务是获取最新的几条数据,所以 我写了一个以下的DAL:

public List<SoftMODEL> GetNewList(int intTop,string strOrderBy)
       {
           DataTable table = SqlHelper.ExecuteDataTable("select top @intTop * from T_Soft order by @strOrderBy", new SqlParameter("@intTop", intTop), new SqlParameter("@strOrderBy", strOrderBy));

 

然后我在前台想用bll.GetNewList(7,"LinkID")来调用,但是这样的SQL语句有误,所以不能用。

这个语句应该怎么来写,因为取几条和按什么排序我想在前台页面能控制,不是直接写死在SQL语中。

 

在群上网友给了一个拼接SQL字符串的方法。可行。

那用动态SQL的方法应该怎么写?

DZCMS的主页 DZCMS | 初学一级 | 园豆:5
提问于:2013-02-10 21:10
< >
分享
最佳答案
0

"select top (@intTop) * from T_Soft order by @strOrderBy"

奖励园豆:5
gunsmoke | 老鸟四级 |园豆:3592 | 2013-02-11 16:29

SqlHelper.ExecuteDataTable(@"select top (@intTop) * from T_Soft order by (@strOrderBy)",
               new SqlParameter("@intTop", intTop),
               new SqlParameter("@strOrderBy",strOrderBy));

由 ORDER BY 编号 1 标识的 SELECT 项包含一个变量,作为标识列位置的表达式的一部分。按照引用列名的表达式排序时,只允许使用变量。

这样写报错啊。

DZCMS | 园豆:5 (初学一级) | 2013-02-11 16:36

order by 这里出错了。。

DZCMS | 园豆:5 (初学一级) | 2013-02-11 17:07
其他回答(3)
0

这个写法有什么错误,具体的错误信息

chenping2008 | 园豆:9836 (大侠五级) | 2013-02-11 10:41

top后面不能用参数化啊。

支持(0) 反对(0) DZCMS | 园豆:5 (初学一级) | 2013-02-11 13:34
0

动态SQL就是拼接

56180825 | 园豆:1587 (小虾三级) | 2013-02-11 19:51
0

order by后边应该是字段名吧  字段名虽然可以变化,但是 字段不需要参数化吧?

dreamhappy | 园豆:4 (初学一级) | 2013-02-12 11:14

看看这篇 改造下你的实体类,方便sql的写法 http://www.cnblogs.com/needrunning/archive/2011/11/15/2250068.html

支持(0) 反对(0) dreamhappy | 园豆:4 (初学一级) | 2013-02-12 11:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册