一个很长很长的sql语句,大家在vs环境下一样怎么写?就是说一行太长太长的情况。
给个例子吧。不过,除了类似以下这种string str = "select a, b, c, d ";
str += "from table where a='" + strA + "' and ";
str += ...
...
给个例子吧。不过,除了类似以下这种string str = "select a, b, c, d ";
str += "from table where a='" + strA + "' and ";
str += ...
...
解决方案 »
- WPF鼠标事件mouseenter,鼠标移入改变控件颜色
- 关于字符串和数组的一些问题
- 关于axSpreadsheet的使用
- 2个问题;#ffff后面2位没有是不是代表0?求正则表达rgb(0,0,0)或rgba(0,0,0,1.0)
- ~~~~~~~~~~~~~~~~~~~~~~~内存不断的递增,直至抛异常
- 使用 TcpClient 传输多张图片的问题
- C#winform做一个网吧计费系统,求指教啊!%>_<%
- 还是刚才的C#语言问题,这次是对的,刚才没说清楚,解决立刻揭帖,两个贴全部给你。谢谢!
- C# webfrom有什么办法获取浏览器的所有COOKIE
- dataGridView1显示问题,从另一个类传过来,可什么也不显示????
- 什么的架构才能称得上专业呢?
- DataList edit项中的FindControl的问题
str += "...";也可以。不过,还是问问。
//可以这样写,我就是这样写的
"select a, b, c, d " +
"from table where a='" + strA + "' and exists(" +
"(Select aaa FROM tableb WHERE EXISTS" +
"(SELECT j FROM tablec LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3" +
"RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4" +
"ON tab3.c1 = tab4.c1" +
"ON tab2.c3 = tab4.c3";
还有没有别的招呢?
str.Append("select a, b, c, d ");
str.Append("from table where a='" + strA + "' and exists(");
str.Append("(Select aaa FROM tableb WHERE EXISTS");
str.Append("(SELECT j FROM tablec LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3");
str.Append("RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4");
str.Append("ON tab3.c1 = tab4.c1");
str.Append("ON tab2.c3 = tab4.c3");
c#早已经设计好了,应该这样写:string str = @"
select a, b, c, d
from table
where a='{0}' and
.....
.....
";
str=string.Format(str,strA);
对了,前面的@符号是干什么的?
说实话,我一直没学会在Oracle编写存储过程。
觉得比sql server烦多了就一直没学,这种学习态度让自己惭愧哦。
比如它在string中的应用。
⊙ ⊙ 字符@表示,其后的字符串是个“逐字字符串”(verbatim string)。 // 这个说法来自C# Primer 中文版(Stanley B. Lippman, 侯捷/陈硕合译)对于逐字字符串字面变量(verbatim string literal ),我们不再需要使用“转义序列”就可以指定反斜线之类的特殊字符。@的这个特点使得在表示文件路径时很方便。
如:
string str = @"C:\Test.txt";
⊙ ⊙ 另外一点,用@表示的字符串能够跨越数行。这数行之内的空白字符(White Space)都会保留在字符串里。
这样便能允许存储和生成带有格式的文本块。
如:
string strText = @"Line1
Line2
Line3";
⊙ ⊙ 不知道大家在最初看到@的功能时有没有想,如果“转义序列”(\)在字符串中“失效”,那么想包含一个双引号("),怎么办?我找到了答案。
方法很简单。在双引号之前再加一个双引号即可。等等...
在文本行数相对较少的情况下,比如100行以下,两者之间的效率几乎没有差别,但如果需要的行数/数量更多,可以考虑使用StringBuilder.
另外,写SQL语句一定不能急,一行一行的写,逻辑要清楚,容易看清楚及修改,我一般这样写
string sql = "";
sql = "select a.xx ";
sql += " b.xx ";
sql += " c.xx ";
sql += " from table a,table b,table c ";
sql += " where a.id = b.id ";
sql += " and b.id = c.id ";
sql += " and a.id = '" + xx + "' ";
如上,一个一个分开写,看起来清楚,使用起来简单,容易修改/添加,语句之前之后都添加空格,使之尽可能不出现代码粘连的情况.
string strSQL = "select ....."+
" from ...."+
" where .... ";
不过看到兄弟们说用@,试试
加上合理的分段。
str += "";
=======
StringBuilder sb = "";
sb.Append();
=========
如果sql语句太长
这两种方法都不太好,至少改动验证不方便,容易出错,总之有一种不好的味道在里面。
最好用存储过程,如果实在不想用存储过程,写在配制文件里也是个方法
推荐使用@符号换行
以及将他写入存储过程--Duwamish的例子里都是这么做的!