在程序中书写SQL语句


   园子里关于存储过程的讨论有很多,不少人建议将SQL语句写在程序中,这篇随笔讨论一下SQL语句在程序中的写法。 

1string strSQL = "SELECT [AddressID], [AddressLine1], [AddressLine2], [City], [StateProvinceID], [PostalCode], [rowguid], [ModifiedDate] FROM [AdventureWorks].[Person].[Address] WHERE City = 'Bothell' ORDER BY AddressID";

    这是最普通的一种写法,而且在开发中被广泛采用。

 1                string strSQL =     "SELECT " + 
 2                                        "[AddressID], " + 
 3                                        "[AddressLine1], " +
 4                                        "[AddressLine2], " +
 5                                        "[City], " +
 6                                        "[StateProvinceID], " +
 7                                        "[PostalCode], " +
 8                                        "[rowguid], " +
 9                                        "[ModifiedDate] " +
10                                    "FROM " +
11                                        "[AdventureWorks].[Person].[Address] " +
12                                    "WHERE " +
13                                        "City = 'Bothell' " +
14                                    "ORDER BY " +
15                                        "AddressID";
16

    第二种写法,除了让人开着舒服一点外,没有任何好处。

    上图所示的写法要更好一点,可以降低维护难度,提高开发效率,团队开发中应该对这些小细节加以规定。其中,图中标示的第一点可以看看在SQL Server 2005中通过下图菜单生成的SQL语句,但不知道为什么SQL Server 2005的查询编辑器生成的SQL语句还是那么蹩脚。微软完全可以解析SQL语句并使之成为更有利于开发的格式。

    如果有两个表进行连接,INNER(LEFT/RIGHT) JOIN等语句也应该写在一行。另外,建议使用更简单的英文别名代替中文表名。

    呵呵,很简单吧?如果有更好的书写SQL语句的改进方案,请告诉我。

   

Life is like a boat, and I'm at sea.

posted @ 2006-06-12 22:14 蜡人张 阅读(2616) 评论(13) 编辑 收藏

 回复 引用   
#1楼 2006-06-13 14:11 gzj[未注册用户]
图所示的sql的写法很好。
请问上图是用什么工具编辑的?

 回复 引用 查看   
#2楼[楼主] 2006-06-13 17:55 蜡人张      
@gzj
呵呵,是SnagIt!

 回复 引用   
#3楼 2006-06-22 22:15 panda[未注册用户]
挺好,谢谢张老师
 回复 引用 查看   
#4楼 2006-07-07 20:13 天轰穿      
管他的哦,收藏了再说!
 回复 引用 查看   
#5楼 2006-07-12 09:07 Nina      
的確很好,不過在與其它表的鏈接操作時,感覺沒sql 2000好操作了
 回复 引用   
#6楼 2006-08-31 15:35 natualperson[未注册用户]
我觉得可以把sql写在一行里面比较好,vs2003/vs2005支持自动换行,测试得时候直接把sql语句拷贝出来就可以在查询分析器里调试.
 回复 引用 查看   
#7楼[楼主] 2006-08-31 21:14 蜡人张      
@natualperson
这样的话不是很直观,修改起来比较麻烦。如果按照随笔中的写法,也可以很容易地拷贝到查询分析器中调试的。

 回复 引用   
#8楼 2006-09-04 16:05 qq[匿名][未注册用户]
VB.net中怎么做?
 回复 引用 查看   
#9楼[楼主] 2006-09-04 21:49 蜡人张      
@qq[匿名]
这个我还真是不知道,基本上没用过VB .NET。我只记得在VB中一行代码写在多行在上一行的末尾要加_,这样的话似乎不好这样写,抱歉,没考虑到在VB .NET中的情况。

 回复 引用 查看   
#10楼 2006-12-01 13:38 Geoffrey      
楼主的写法会自动添加换行符号,导致sql语句非法
 回复 引用 查看   
#11楼[楼主] 2006-12-01 14:15 蜡人张      
@Geoffrey
不会吧,我承认有换行符不错,但传递给数据库的服务器的时候会忽略这些换行符的,我以前做的项目中就是这么写的,没问题。

 回复 引用   
#12楼 2007-01-24 16:30 eagle[未注册用户]
我全部用第二种!
然后用string.format来处理传入的参数!

 回复 引用 查看   
#13楼 2010-04-05 00:39 折腾没完      
MR张的代码干净利索,代码很美,呵呵。