C# @转义字符的优缺点。

阿冷 2010-09-16 10:10:21
C#中字符串变量,加了转义字符的(例:string str = @”ab\”!c”),
中间能插入字符串变量吗?
一般:String sql = “Select a from table1 Where a = ‘” + para + ”’”;
不一般: String sql = @“Select a from table1 Where a = ‘” + para + ”’”;(可能多行)
...全文
727 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bclz_vs 的回复:]
可以插入字符串变量

C# code

String sql =String.Format(@“
SELECT a
FROM table1
WHERE a ='{0}'
AND b='{1}'
",para,para1);
[/Quote]

另外也不建议这样的写法,这种习惯很不好。应该使用参数化SQL。
threenewbee 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yitoushengkou 的回复:]
引用 4 楼 caozhy 的回复:
首先你要明白这是什么,干什么的。
第二,就是写足够多的程序,经常用。

这种问题就不用问了。

如同你天天吃饭,不必问筷子和勺子的优缺点,就算没有阅读过筷子的说明书,我想你也不会蠢到用筷子喝汤的吧。


问不问在我,你没权利限制我问。
2楼的答得挺好,一针见血。
就你这段,只看标题,不看内容的回答,和2星水平不副。
暴发户,怎么看都是没……
[/Quote]
看清了你的问题了,觉得问题比标题更低级。

如果这回没看错,你的意思是你担心用了 @,那么会丢失拼接字符串里面的转义字符。这说明你对编程语言基本概念都不清楚。

@"\" 的意思就是告诉编译器,这是一个反斜杠的字符。注意是编译器,编译器是什么估计你理解不深刻,它是将源代码翻译成目标代码的程序。注意这一点,目标程序里面只有这个反斜杠的字符(假设是一个字节,叫0x5c),而不管它是从"\\"来的,还是从@"\"来的。至于para里面的内容,运行的时候才能确定。假设里面也有个“\\”,它怎么会被编译器转换为单个“\”呢?

至于我说这个问题不要问,很明显,我不是说你不要问问题,而是接着前面的话,你理解了基本概念,这些问题自然就明白了,不需要问了。

初学者首先要把基本语言搞清楚,而不是去实现什么功能,这是我给你的一点建议。再次看了你的问题和几个回答,觉得这一点我没有说错。

最后,“符”也被你写错了。别人有没有文化和你关系不大。做好自己的事情吧。
阿冷 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 caozhy 的回复:]
首先你要明白这是什么,干什么的。
第二,就是写足够多的程序,经常用。

这种问题就不用问了。

如同你天天吃饭,不必问筷子和勺子的优缺点,就算没有阅读过筷子的说明书,我想你也不会蠢到用筷子喝汤的吧。
[/Quote]

问不问在我,你没权利限制我问。
2楼的答得挺好,一针见血。
就你这段,只看标题,不看内容的回答,和2星水平不副。
暴发户,怎么看都是没文化,光有钱没用。
threenewbee 2010-09-16
  • 打赏
  • 举报
回复
首先你要明白这是什么,干什么的。
第二,就是写足够多的程序,经常用。

这种问题就不用问了。

如同你天天吃饭,不必问筷子和勺子的优缺点,就算没有阅读过筷子的说明书,我想你也不会蠢到用筷子喝汤的吧。
边城的刀声 2010-09-16
  • 打赏
  • 举报
回复

String sql =String.Format(@"
SELECT a
FROM table1
WHERE a ='{0}'
AND b='{1}'
",para,para1);
边城的刀声 2010-09-16
  • 打赏
  • 举报
回复
可以插入字符串变量

String sql =String.Format(@“
SELECT a
FROM table1
WHERE a ='{0}'
AND b='{1}'
",para,para1);
兔子-顾问 2010-09-16
  • 打赏
  • 举报
回复
就是个简化写法。没什么优缺点。
如果你的字符串中有大量的\字符,而不是想用转义,那就写@来取消\转义字符。
边城的刀声 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 caozhy 的回复:]

引用 2 楼 bclz_vs 的回复:
可以插入字符串变量

C# code

String sql =String.Format(@“
SELECT a
FROM table1
WHERE a ='{0}'
AND b='{1}'
",para,para1);


另外也不建议这样的写法,这种习惯很不好。应该使用参数化SQL。
[/Quote]
哈哈,是的,这里只是说明了下String.Format的使用。
threenewbee 2010-09-16
  • 打赏
  • 举报
回复
string queryString = "select a from table1 where a = @para";
SqlCommand cmd = new SqlCommand(queryString, conn);
cmd.Parameters.Add("@para", para);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
兔子-顾问 2010-09-16
  • 打赏
  • 举报
回复
口吻变化的真快
阿冷 2010-09-16
  • 打赏
  • 举报
回复
〉另外也不建议这样的写法,这种习惯很不好。应该使用参数化SQL。
7楼的这位,说话就知道是个.net高手啊。
能给个参数化SQL的小例子吗?

62,272

社区成员

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

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

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

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