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 换行符,执行就报错。怎么会这样呢?求赐教!!!!!!!!
...全文
394 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
钟伟海 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
  • 打赏
  • 举报
回复
你的问题是为什么以前没有报错是吧?

111,098

社区成员

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

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

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