簡體   English   中英

正確的C#Visual Studio查詢格式

[英]Correct format of a query for C# visual studio

任何人都可以幫助我為Visual Studio正確設置SQL查詢的格式,因為WITH提示換行符為常數,我得到了一個錯誤。

下面是我的代碼,簡而言之,它查看一個主序列,對其進行計數,如果大於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))";

可能是您的錯誤,因為您失蹤; 在With語句之前應類似於; with

最好使用StringBuilder而不是字符串append.StringBuilder占用的內存少於字符串,因為它初始化對象一次,而字符串占用的每個Append操作內存,因此使用更多的內存。

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)”)仍然不清楚 查詢中,請對其進行更新,然后嘗試

為什么要將您的代碼中的大量查詢弄亂,只需將sql代碼放在“視圖”或“過程”下,然后在sql命令中執行視圖或過程即可。

但是請注意,對於一個過程,命令將是

command.CommandType = CommandType.StoredProcedure;

這將減少所有混亂

您可以在字符串之前添加一個@符號,以便它可以跨越多行。 然后,您到處都不需要+ "yoda yoda" 😉

如果需要向其中注入變量,則可以將整個內容包裝在string.Format

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM