2016-09-20 81 views
-1

任何人都可以幫助我正確地格式化我的SQL查詢的Visual Studio,我得到一個錯誤,它說,在換行換行符。C#visual studio查詢的正確格式

下面是我的代碼在短代碼,它看起來在主程序,數了,如果有更多的則是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))"; 
+1

你的第一行缺少結束引號。在提問之前閱讀[問]並嘗試研究這個錯誤。 – CodeCaster

+0

您在第一行缺少雙引號 –

+0

HAVING count(master_seq)> 1'「+ yesterday +」'「,IntConnect)也看起來有些遺漏 –

回答

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)」)的明確;在查詢中,請更新它,然後嘗試

0

爲什麼在你的代碼中混淆了很多查詢,只是把sql代碼放在一個View或一個Procedure下,然後在你的sql命令中執行視圖或過程。

但要注意,對於一個過程中的命令將是

command.CommandType = CommandType.StoredProcedure;

這將降低所有messup

0

則可以將字符串前添加一個@符號所以那麼它可以跨越多行。那麼你就需要有+ "yoda yoda"到處

如果你需要注入的變量到它,那麼你可以只包住整個事情string.Format

相關問題