在C#应用程序中格式化SQL查询的正确方法

时间:2012-01-10 18:40:49

标签: c# sql

我有一个C#控制台应用程序,可以对数据库服务器进行大量查询。

我经常需要修改SQL,并且只想将SQL编辑器中的SQL复制/粘贴到我的C#源代码中,而不必每次都重新格式化SQL。

目前,SQL全部在一行......如下所示:

  OleDbDataAdapter da_ssm_servers = new OleDbDataAdapter(@"SELECT * FROM mytable ORDER BY Server;", connSSM);

使用大量的表JOINS等,SQL比上面的长得多。

我想保留格式,但不是真的想要回去并在每行附近添加引号等。

如果有人有任何建议和例子,我们将不胜感激。

4 个答案:

答案 0 :(得分:8)

我这样做:

string sql = @"
    SELECT * 
    FROM mytable 
    ORDER BY Server";
OleDbDataAdapter da_ssm_servers = new OleDbDataAdapter(sql, connSSM); 

答案 1 :(得分:2)

我的建议是远离您正在使用的即席查询并使用存储过程。这将解耦您的设计,并限制您对存储过程名称和可能的参数的调用。

但是如果你必须使用即席查询,那么前缀为@,你就可以跨越多行,而不必用引号括起每一行。

答案 2 :(得分:0)

只要您使用@语法,就可以让SQL跨越多行。

例如

string sql = @"select 
                  colA, 
                  colB, 
                  colC
               from
                  tableX
                  inner join tableY
                     on tableX.colA = tableY.colA
               where
                  colB > 20;"   

答案 3 :(得分:0)

您的代码似乎应该可以正常运行。当你用@开始你的字符串时,你使用的是逐字字符串。保留换行符和格式,您不需要在引号中包含每一行。你只需要一个结束语。