日期:2014-05-20  浏览次数:20951 次

<经典> 开发==>模拟查询分析器
模拟查询分析器(C#+MS-SQL)
在winfrom里,我在一个文本框里输入SQL语句(可以有多行语句,如:select   getdate()     print   'OK '   exec   sqlctrs_users   'dt_whocheckout_u '),点一下运行SQL脚本,就会在另一个文本框或是DATAGIRDVIEW里出现执行出来的结果   ,而且能检查语法错误
我用的存储过程是这个
CREATE       PROCEDURE       ProOut      
  @InCode   nvarchar(4000)
    AS      
  DECLARE   @num   int
  EXEC   sp_executesql   @InCode,N '@a   nvarchar(4000)   output ',@num   output  
我现在用DATAGRIDVIEW接收返回的数据,好像不能接多条SQL语句的返回值
我返回的结果不能全部显示出来,不能检查错误

QQ88981904     xiebinren1013@163.com
感谢各位提出宝贵的建议!希望   慕白兄   能光顾到这


------解决方案--------------------
顺路坐头铺
------解决方案--------------------
找一找SQLServer的插件
------解决方案--------------------
脚本一般用;分号作一句结束
所以,你用;作为分隔符,把它分隔到数组里,循环执行就OK了
另一个就是模拟查询分析器,执行鼠标高亮选择的那一段

检查,其实就是开始一个事务,然后执行脚本,最后事务回滚
如果出错,就是检查不通过了
------解决方案--------------------
楼上的
---------------------
检查,其实就是开始一个事务,然后执行脚本,最后事务回滚
如果出错,就是检查不通过了
---------------------
比较粗糙的模拟可以,如果执行脚本需的时间比较长,岂不是检查的时间相应比较长。
------解决方案--------------------
直接把字符串内容用ExcuteReader 来执行不行么? 干吗要弄个存储过程?

ExcuteReader 也可以执行Update啊Insert啊的,就是不返回结果而已.

建个事务,Try-Catch一下就判断出语法问题了,直接把错误信息输出给用户看, 这就模拟起来了,多方便,何苦搞那么多事....

而且Reader可以有多个结果集,如果你的语句写了2个Select还可以绑出2个DATAGIRDVIEW...


以上方式绝对可行,因为我已经试过了.... ^_^