vs2010和sqlserver执行同一数据库中同一存储过程 结果却不一样

chensheng0223 2012-04-29 04:10:53
vs2010没有返回结果不知道是出错还是怎么回事,sqlserver返回的是正确的结果
求各位高手赐教
ps:下面是创建存储过程的代码,查询数据库中OpenRoomInfo表中的数据


/*查询所有的开房信息(首页的Grid,带搜索功能)*/
create proc GetOpenRoomInfoAll(@message varchar(50))
as
if (@message = '')
begin
select a.OpenRoomId,b.Number,c.TypeName,c.TypePrice,a.OpenTime,a.PlanDays,a.GuestMoney,a.GuestId,
a.GuestName,a.GuestPhone,a.Remark from OpenRoomInfo as a,Room as b,RoomType as c
where a.RoomId = b.RoomId and b.TypeId = c.TypeId
end
else
begin
select a.OpenRoomId,b.Number,c.TypeName,c.TypePrice,a.OpenTime,a.GuestMoney,a.GuestId,a.GuestName,
a.GuestPhone,a.Remark from OpenRoomInfo as a,Room as b,RoomType as c where a.RoomId = b.RoomId and
b.TypeId = c.TypeId and (b.Number like @message+'%' or c.TypeName like @message+'%'
or a.GuestId like @message+'%' or a.GuestName like @message+'%'
or a.GuestPhone like @message+'%' or a.Remark like @message+'%')
end
go
...全文
446 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chensheng0223 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
go
可不是sql语句,根本不能发送给sql server去执行。
[/Quote]
ServerVersion “sda.SelectCommand.Connection.ServerVersion”引发了“System.InvalidOperationException”类型的异常 string {System.InvalidOperationException}
(sda是一个DataAdapter对象)
数据库连接正常,实验Insert存储过程正常,这个Select存储过程却不行

yangchun1213 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
比如说你在查询分析器上写上100行代码,有30条sql语句,并且用5个go分割,那么这就相当于访问sql server数据库5次。

SQL code

go
可不是sql语句,根本不能发送给sql server去执行。
[/Quote]

学习了……
  • 打赏
  • 举报
回复
比如说你在查询分析器上写上100行代码,有30条sql语句,并且用5个go分割,那么这就相当于访问sql server数据库5次。
go
可不是sql语句,根本不能发送给sql server去执行。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
vs2010没有返回结果不知道是出错还是怎么回事
[/Quote]

你没有看到调试器抛出的异常么,如果调试器抛出异常,看它的InnerException属性,可以看到Sql Server返回的异常提示。如果调试器没有异常,那么要看看你自己的的代码了,例如有没有画蛇添足的try...catch使得你根本丧失了调试、测试的能力。这时候删除try...catch就行了。

sql server语句中根本没有
go
这种东西。当你在sql server的查询分析器中打入go,那不过是让查询分析器分割sql语句用的,查询分析器也不会把这个“go”发送给sql server系统去执行的。

所以你在.net程序中发送sql语句给sql server服务器进程时,也不应该包括“go”。
孟子E章 2012-04-29
  • 打赏
  • 举报
回复
可能你的调用代码也是错误的
孟子E章 2012-04-29
  • 打赏
  • 举报
回复
英文不存在编码问题。
你确保你程序调用的数据库跟你测试的是一个,并且存储过程代码是一样的

另外,传参数最好Trim()下空格
chensheng0223 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

vs2010里面你是怎么得到返回记录集的?
@message传入的内容是否存在编码问题?测试编码问题你可以使用英文测试
[/Quote]
都是英文额
难道是数据库不能识别vs2010的编码,两种有区别么
chensheng0223 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

关键是@message的内容

是''而不是DBNULL

你vs断点跟下参数
[/Quote]
断点到执行存储过程,返回就是空的
后来在vs资源管理器中单独执行(右击执行存储过程的那种),还是返回空
孟子E章 2012-04-29
  • 打赏
  • 举报
回复
vs2010里面你是怎么得到返回记录集的?
@message传入的内容是否存在编码问题?测试编码问题你可以使用英文测试
传递正能量 2012-04-29
  • 打赏
  • 举报
回复
关键是@message的内容

是''而不是DBNULL

你vs断点跟下参数

62,266

社区成员

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

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

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

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