执行不了这条SQL 语句 SELECT 12;GO

r_swordsman 2008-10-11 09:55:48
我用SQLCOMMAND执行这条语句
SELECT 12;
GO

会出现错误,

那我要执行上面的SQL语句怎么执行?语句不能改。

谁用NET类库或自定义类运行了上面的SQL,
300分(过几天会+分或者开贴点名)全部给

没人能回答的话,100分全给
...全文
279 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
r_swordsman 2008-10-27
  • 打赏
  • 举报
回复
真难
r_swordsman 2008-10-15
  • 打赏
  • 举报
回复
有没人弄过?
贫僧又回来了 2008-10-13
  • 打赏
  • 举报
回复
在用C#中调用ADO执行批量SQL语句的时候,会出现无法识别GO语句的错误。这个时候,我们以GO语句为分割点,把整个批量语句分割成N块独立的SQL语句代码块(不包含GO语句),然后再顺序执行每一块代码。
编程实现方法如下:

System.Data.SqlClient.SqlCommand sqlCommand = new System.Data.SqlClient.SqlCommand();
sqlCommand.Connection = this.Connection;//这里的 this.Connection 替换成你的SQL数据库连接

System.Collections.ArrayList al = new System.Collections.ArrayList();
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex( @"^(\s*)go(\s*)$", System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Multiline | System.Text.RegularExpressions.RegexOptions.Compiled | System.Text.RegularExpressions.RegexOptions.ExplicitCapture );
al.AddRange( reg.Split(SQLString) );//SQLString是你的原始SQL批量语句,在这里通过上面的正则表达式进行分割,然后添加到集合(al实例)中。
foreach( string tmp in al )//循环执行每一个SQL代码块
{
sqlCommand.CommandText = tmp.Trim();
if( sqlCommand.CommandText.Length > 0 )
{
sqlCommand.ExecuteNonQuery();
}
}
贫僧又回来了 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 r_swordsman 的回复:]
引用 29 楼 q704174307 的回复:
sql = Regex.Replace(sql, @"(?mi)^\s*go\s*$", "");
不知对不对,顺便帮你顶上去


你是要把go去掉?
[/Quote]
对的,GO不是可识别的T-SQL语句,在C#中要把GO去掉,不然会报错!
参考下这个
http://publish.it168.com/2005/0803/20050803071701.shtml
r_swordsman 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 q704174307 的回复:]
sql = Regex.Replace(sql, @"(?mi)^\s*go\s*$", "");
不知对不对,顺便帮你顶上去
[/Quote]

你是要把go去掉?
q704174307 2008-10-13
  • 打赏
  • 举报
回复
sql = Regex.Replace(sql, @"(?mi)^\s*go\s*$", "");
不知对不对,顺便帮你顶上去
lululove1314 2008-10-13
  • 打赏
  • 举报
回复
up
zbking 2008-10-13
  • 打赏
  • 举报
回复
帮顶学习
r_swordsman 2008-10-13
  • 打赏
  • 举报
回复
ls太夸张了吧?连水3贴?
zuoxxx 2008-10-13
  • 打赏
  • 举报
回复
回帖是一种美德!传说每天回帖即可获得 10 分可用分!
zuoxxx 2008-10-13
  • 打赏
  • 举报
回复
回帖是一种美德!传说每天回帖即可获得 10 分可用分!
zuoxxx 2008-10-13
  • 打赏
  • 举报
回复
回帖是一种美德!传说每天回帖即可获得 10 分可用分!
r_swordsman 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 wuyi8808 的回复:]
引用 20 楼 r_swordsman 的回复:
.NET有没有执行批处理的类或方法?
或这自己如何实现一个自定义的类。


.NET恐怕没有现成的类。

自己定义的类,我想到的最简单的就是如上面所说的“去掉所有不在单引号中的单独一行的 GO”。

或者可以考虑调用一个“微型的查询分析器”去执行SQL语句,并且要求能返回查询结果给调用它的程序。
[/Quote]

把批处理分隔执行始终不好,比如事物,会话变量等
r_swordsman 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 Guyschaos 的回复:]
好象是用C#调用osql.exe(好象是这么写的)就可以,你试试!我当时做数据库脚本执行的时候也遇到过这样的问题!
[/Quote]

那怎么获取结果集呢?
r_swordsman 2008-10-13
  • 打赏
  • 举报
回复
其实我就是想用C#实现,可以想查询分析器那样执行任何SQL语句的组合,就是查询分析器能执行的,c#中也要能执行
而且结果一样,什么事务啊,会话信息啊,结果统统一样,

有没人弄过?
贫僧又回来了 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 r_swordsman 的回复:]
引用 32 楼 Guyschaos 的回复:
在用C#中调用ADO执行批量SQL语句的时候,会出现无法识别GO语句的错误。这个时候,我们以GO语句为分割点,把整个批量语句分割成N块独立的SQL语句代码块(不包含GO语句),然后再顺序执行每一块代码。
编程实现方法如下:

System.Data.SqlClient.SqlCommand sqlCommand = new System.Data.SqlClient.SqlCommand();
sqlCommand.Connection = this.Connection;//这里的 this.Connecti…
[/Quote]
好象是用C#调用osql.exe(好象是这么写的)就可以,你试试!我当时做数据库脚本执行的时候也遇到过这样的问题!
zhiaini 2008-10-13
  • 打赏
  • 举报
回复
学习了
r_swordsman 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 Guyschaos 的回复:]
在用C#中调用ADO执行批量SQL语句的时候,会出现无法识别GO语句的错误。这个时候,我们以GO语句为分割点,把整个批量语句分割成N块独立的SQL语句代码块(不包含GO语句),然后再顺序执行每一块代码。
编程实现方法如下:

System.Data.SqlClient.SqlCommand sqlCommand = new System.Data.SqlClient.SqlCommand();
sqlCommand.Connection = this.Connection;//这里的 this.Connection 替换成你的SQL数据库连接


[/Quote]

呵呵,拆分sql执行总是不太好吧?

begin transaction ; 
select 1;
go
select 2;
go
commit transaction;
wuyi8808 2008-10-11
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 r_swordsman 的回复:]
.NET有没有执行批处理的类或方法?
或这自己如何实现一个自定义的类。

[/Quote]

.NET恐怕没有现成的类。

自己定义的类,我想到的最简单的就是如上面所说的“去掉所有不在单引号中的单独一行的 GO”。

或者可以考虑调用一个“微型的查询分析器”去执行SQL语句,并且要求能返回查询结果给调用它的程序。
r_swordsman 2008-10-11
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wuyi8808 的回复:]
引用 17 楼 r_swordsman 的回复:
拆分sql执行总是不太好吧?

begin transaction ;
select 1;
go
select 2;
go
commit transaction;

确实不好,不知还有没有更好的办法?
[/Quote]

所以想,.NET有没有执行批处理的类或方法?
或这自己如何实现一个自定义的类。
加载更多回复(19)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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