黑马程序员技术交流社区

标题: 关于三层中SQL参数查询的问题 [打印本页]

作者: 繼續墮蘿    时间: 2013-2-11 16:08
标题: 关于三层中SQL参数查询的问题
应用场景:
获取一个表中的最新几条数据。
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(10,"AddDate")这样来调用,但是在执行时,SQL语句报错,也就是top后面的不能参数化。

不能参数化,我就改成了拼接SQL语句
public List<SoftMODEL> GetNewList(int intTop,string strOrderBy)
       {
           DataTable table = SqlHelper.ExecuteDataTable("select top "+intTop+" * from T_Soft order by "+"strOrderBy".......
这样来写,功能是实现了,但是拼接SQL句可能存在注入漏洞,如果参数很多时写起来更加麻烦。

所以像 样的场景,这里应该怎么写。


作者: 马谦    时间: 2013-2-21 17:56
用户输入的用参数就行,要是程序自己产生的就没必要用参数了,拼字符串也是可以的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2