我有一个C#控制台应用程序,可以对数据库服务器进行大量查询。
我经常需要修改SQL,并且只想将SQL编辑器中的SQL复制/粘贴到我的C#源代码中,而不必每次都重新格式化SQL。
目前,SQL全部在一行......如下所示:
OleDbDataAdapter da_ssm_servers = new OleDbDataAdapter(@"SELECT * FROM mytable ORDER BY Server;", connSSM);
使用大量的表JOINS等,SQL比上面的长得多。
我想保留格式,但不是真的想要回去并在每行附近添加引号等。
如果有人有任何建议和例子,我们将不胜感激。
答案 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)
您的代码似乎应该可以正常运行。当你用@开始你的字符串时,你使用的是逐字字符串。保留换行符和格式,您不需要在引号中包含每一行。你只需要一个结束语。