• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

vs2010中,用String.Format(@)写sql语句报错啊。求高手啊。

钟伟海 国新健康保障服务有限公司 大数据  2015-01-07 08:37:53
很奇怪的问题,以前写好的程序,在写sql语句时,有些是用String.Format(@,有些是StringBuilder strSql = new StringBuilder();来写的,以前都是好的,这次重做了下系统。但现在String.Format(@的sql语句都会报错,调试后发现是,语句在换行时自动带上了换行符 \r\n ,也就执行报错了。
如:String.Format(@"UPDATE S_SUPPLY SET NAME ='1', ABBR ='2', ORG_TYPE ='3', ADDS ='4',
SH ='5', YHZH ='6', LXR ='7', YB ='8'“);

程序执行时sql语句变成了:UPDATE S_SUPPLY SET NAME ='1', ABBR ='2', ORG_TYPE ='3', ADDS ='4', \r\n
SH ='5', YHZH ='6', LXR ='7', YB ='8'

换行出带上了 \r\n 换行符,执行就报错。怎么会这样呢?求赐教!!!!!!!!
...全文
208 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
钟伟海 2015-01-16
引用 14 楼 Z65443344 的回复:
[quote=引用 13 楼 phommy 的回复:] 数据库是oracle?oracle不认识windows的换行,你得.Replace("\r\n","\n")
其实不如这样: string.Replace("\r"," ").Replace("\n"," ") 不管哪种数据库,空格是保证认识的,而且空格多还是少是没有区别的,只要关键字之间都用空格区分开不要连接在一起就行[/quote] 谢谢,确实这样替换一下就搞定了。
回复
江南小鱼 2015-01-08
引用 楼主 bluepb 的回复:
很奇怪的问题,以前写好的程序,在写sql语句时,有些是用String.Format(@,有些是StringBuilder strSql = new StringBuilder();来写的,以前都是好的,这次重做了下系统。但现在String.Format(@的sql语句都会报错,调试后发现是,语句在换行时自动带上了换行符 \r\n ,也就执行报错了。 如:String.Format(@"UPDATE S_SUPPLY SET NAME ='1', ABBR ='2', ORG_TYPE ='3', ADDS ='4', SH ='5', YHZH ='6', LXR ='7', YB ='8'“); 程序执行时sql语句变成了:UPDATE S_SUPPLY SET NAME ='1', ABBR ='2', ORG_TYPE ='3', ADDS ='4', \r\n SH ='5', YHZH ='6', LXR ='7', YB ='8' 换行出带上了 \r\n 换行符,执行就报错。怎么会这样呢?求赐教!!!!!!!!
你调试下,sql变量在调用数据库执行之前就有了回车换行,还是在数据库执行时产生的回车换行?
回复
zhaochanglong 2015-01-08
一直这么用 没发现有仍和问题
回复
qq_19920727 2015-01-08
string sql = String.Format(@"UPDATE S_SUPPLY SET NAME ='{0}', ABBR ='{1}', ORG_TYPE ='{2}', ADDS ='{3}', SH ='{4}', YHZH ='{5}', LXR ='{6}', YB ='{7}' “,2,3,4,5,6,7,8);
回复
SeeYou孙悟空 2015-01-08
不知道你为什么 后面换行要使用+ @ 其实就可以制动实现 你下一行的吧。。。。。反正我写的时候就是这样: string.format(@"........ ........ ........");
回复
於黾 2015-01-08
引用 13 楼 phommy 的回复:
数据库是oracle?oracle不认识windows的换行,你得.Replace("\r\n","\n")
其实不如这样: string.Replace("\r"," ").Replace("\n"," ") 不管哪种数据库,空格是保证认识的,而且空格多还是少是没有区别的,只要关键字之间都用空格区分开不要连接在一起就行
回复
phommy 2015-01-08
数据库是oracle?oracle不认识windows的换行,你得.Replace("\r\n","\n")
回复
tcmakebest 2015-01-08
不知道SQL语句经过了什么样的处理,换行符是不影响SQL语句的执行的,可能是在哪个步骤把换行变成转义符了吧,大概是有自作聪明的家伙在搞鬼.
回复
於黾 2015-01-08
用@确实会产生换行符,不过放到数据库里应该是可以执行的才对 你还是找找重做的系统和之前到底有什么区别吧
回复
wind_cloud2011 2015-01-07
加用+, string s= String.Format(@"UPDATE S_SUPPLY SET NAME ='1', ABBR ='2', ORG_TYPE ='3',"+ "ADDS ='4',SH ='5', YHZH ='6', LXR ='7', YB ='8'");
回复
钟伟海 2015-01-07
不会吧,数据库一直在服务器上,除了数据的读取外,没变动过,用的是oracle10g的数据库。
回复
你用的数据库的问题,不是VS的问题
回复
auos 2015-01-07
还是在换行的时候用“...” +“...”这样吧,直接换行不知道好不好
回复
钟伟海 2015-01-07
是啊,以前没有报错啊,现在怎么报错了呢?
回复
mnxm 2015-01-07
你的问题是为什么以前没有报错是吧?
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2015-01-07 08:37
社区公告

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