如何给SqlDataAdapter传入order by参数

又是违规昵称 2008-12-19 04:56:10
环境sql server 2005, vs2005

写了一个查询的sql语句,
比如select * from emp order by @sortMethod,

用SqlDataAdapter返回DataSet, 想把排序方式做为一个参数写进去,即
mySqlDataAdapter.SelectCommand.Parameters.Add("@sortMethod", SqlDbType.VarChar).Value = myPageSetting.SortMethod;

但是总报sql出错,跟踪了下,发现就问题就在order by的参数上,怀疑变成了
select * from emp order by 'desc'

怎么处理,各位有好的解决办法吗?
...全文
151 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2008-12-19
  • 打赏
  • 举报
回复
通过dataview实现排序或把排序方式传入存储过程实现
又是违规昵称 2008-12-19
  • 打赏
  • 举报
回复
算了,不胡思乱想了,解决了就行

谢谢各位了
phoebuswei 2008-12-19
  • 打赏
  • 举报
回复
不用那么复杂
用返回的dataTable.select("字段",“desc ”);
ok了,而且性能好
又是违规昵称 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sp1234 的回复:]
引用楼主 lpc19598188 的帖子:
select * from emp order by @sortMethod,

啊哈,这个你也想得出来啊?!

你的参数查询不是都是用在常量数值上吗?你这里可是字段名啊!

如果一定要通过参数提交一个变量,那么你的sql中就只能出现类似这样的语句了

declare @sql nvarchar(100)
set @sql='select * from emp order by '+@sortMethod
.......
[/Quote]

在一楼我写掉了个字段,具体的过程我写8楼了
又是违规昵称 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiang_jiajia10 的回复:]
@sortMethod存储过程里面他是什么类型的
[/Quote]

没用存储过程,

我想传 asc 或者 desc 进sql中去,
但是mySqlDataAdapter.SelectCommand.Parameters.Add()方法总给这两个关键字加引号
  • 打赏
  • 举报
回复
[Quote=引用楼主 lpc19598188 的帖子:]
select * from emp order by @sortMethod, [/Quote]

啊哈,这个你也想得出来啊?!

你的参数查询不是都是用在常量数值上吗?你这里可是字段名啊!

如果一定要通过参数提交一个变量,那么你的sql中就只能出现类似这样的语句了

declare @sql nvarchar(100)
set @sql='select * from emp order by '+@sortMethod
.......
又是违规昵称 2008-12-19
  • 打赏
  • 举报
回复

sqlBuilder.Append(" and rownum between @startRow and @endRow ");
sqlBuilder.Append(" order by EnterpriseID ");
sqlBuilder.Append( myPageSetting.SortMethod);

//mySqlDataAdapter.SelectCommand.Parameters.Add("@sortMethod", SqlDbType.VarChar).Value = myPageSetting.SortMethod;


这样可以,但是感觉很不爽,
因为我一大堆变量在下面一起Parameters.Add的,
单单这一个要放到sqlBuilder里面去,太不完美了

iloveaspnet2008 2008-12-19
  • 打赏
  • 举报
回复
回帖是一种美德!传说每天回帖即可获得 10 分可用分!
jiang_jiajia10 2008-12-19
  • 打赏
  • 举报
回复
@sortMethod存储过程里面他是什么类型的
又是违规昵称 2008-12-19
  • 打赏
  • 举报
回复

mySqlDataAdapter.SelectCommand.Parameters.Add("@sortMethod", SqlDbType.VarChar).Value = "myPageSetting.SortMethod";


这样不行啊
ljhcy99 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ljhcy99 的回复:]
mySqlDataAdapter.SelectCommand.Parameters.Add("@sortMethod", SqlDbType.VarChar).Value = "myPageSetting.SortMethod";
[/Quote]

这样传过去总是有引号的,或者 不要做成参数传递了。拼字符串。
ljhcy99 2008-12-19
  • 打赏
  • 举报
回复
mySqlDataAdapter.SelectCommand.Parameters.Add("@sortMethod", SqlDbType.VarChar).Value = "myPageSetting.SortMethod";

Teng_s2000 2008-12-19
  • 打赏
  • 举报
回复
都传过去了,过滤掉单引号吧哈哈
也可以用StringBuilder自己组装字符串,应该就行
happybuttom 2008-12-19
  • 打赏
  • 举报
回复
期待中,很想知道。

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧