正确的C#visual studio查询格式

时间:2016-09-20 10:23:40

标签: c# sql

任何人都可以帮我正确格式化我的Visual Studio的SQL查询,我得到一个错误,它说Newline in constant。

下面是我的代码简称代码,它查看主序列,对其进行计数,如果有多于1,则split_dlv将使用值1进行更新。

            SqlCommand cmdUpd2 = new SqlCommand(" WITH cte AS(
                                                + "SELECT master_seq"
                                                +  "FROM[ZS_CS_EVO_Integration].[dbo].[CS_Consolidation]"
                                                +  "where delivery_date = yesterday and[master_seq] <> 0"
                                                +   "GROUP BY master_seq"
                                                +  " HAVING count(master_seq) > 1 '" + yesterday + "'", IntConnect)
                                                + "UPDATE c"
                                                + "SET[split_dlv] = 1"
                                                + "FROM[dbo].[CS_Consolidation] c"
                                                + "INNER JOIN cte t"
                                                + "ON t.master_seq = c.master_seq and c.delivery_date = yesterday))";

3 个答案:

答案 0 :(得分:1)

可能是您的错误,因为您错过了;在使用语句之前,应该是这样的;使用

最好使用 StringBuilder 而不是字符串append.StringBuilder占用更少的内存然后字符串,因为它初始化对象一次,而字符串占用每个追加操作的内存,因此使用更多的内存。

StringBuilder sb=new StringBuilder();
sb.Append(";WITH cte AS(");
sb.Append(" SELECT master_seq");
sb.Append(" FROM[ZS_CS_EVO_Integration].[dbo].[CS_Consolidation]");
sb.Append(" where delivery_date = yesterday and[master_seq] <> 0");
sb.Append(" GROUP BY master_seq");
sb.Append(" HAVING count(master_seq) > 1 '" + yesterday + "'");
sb.Append(" , IntConnect)");
sb.Append(" UPDATE c");
sb.Append(" SET[split_dlv] = 1");
sb.Append(" FROM[dbo].[CS_Consolidation] c");
sb.Append(" INNER JOIN cte t");
sb.Append(" ON t.master_seq = c.master_seq and c.delivery_date = yesterday))");

SqlCommand cmdUpd2 = new SqlCommand(sb.ToString());

注意:我仍然不清楚在查询中使用 sb.Append(“,IntConnect)”); ,请更新它,然后尝试

答案 1 :(得分:0)

为什么在代码中搞乱大量查询只需将sql代码放在View或Procedure下,然后在sql命令中执行视图或过程。

但请注意,对于一个程序,命令将是

command.CommandType = CommandType.StoredProcedure;

这将减少所有的混乱

答案 2 :(得分:0)

您可以在字符串前添加+ "yoda yoda"符号,这样它就可以跨越多行。那么你不需要到处都有string.Format

如果您需要将变量注入其中,那么您可以将整个内容包装在{{1}}