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

本文关键字:方法 查询 SQL 应用程序 格式化 | 更新日期: 2023-09-27 18:19:52

我有一个C#控制台应用程序,它对数据库服务器进行一系列查询。

我经常需要修改SQL,并希望简单地将SQL从SQL编辑器复制/粘贴到C#源代码中,而不必每次都重新格式化SQL。

目前,SQL都在一行。。。如下所示:

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

SQL比上面长得多,有很多表JOIN等。

我想保留格式,但不想真的回去在每行周围添加引号,等等。

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

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

我这样做:

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

我的建议是远离像使用和利用存储过程那样的临时查询。这将解耦您的设计,并将您的调用限制为存储过程名称和可能的参数。

但是,如果必须使用即席查询,则使用@作为前缀,这样就可以跨越多行,而不必将每行都用引号括起来。

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

例如

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

看来您的代码应该可以正常工作。当你用@开始你的字符串时,你就使用了一个逐字逐句的字符串。换行符和格式被保留,不需要将每一行都用引号括起来。你只需要一句结束语。