2011-12-15 24 views
2

我必須在運行某些查詢之前設置ANSI_NULLS和其他幾個數據庫選項。所以,在我的代碼在命令文本中設置ANSI_NULLS會給出錯誤

const string query_prefix = "SET ANSI_NULLS ON \n GO \n SET ANSI_PADDING ON \n GO \n SET ANSI_WARNINGS ON \n GO \n SET CONCAT_NULL_YIELDS_NULL ON \n GO \n SET QUOTED_IDENTIFIER ON \n GO \n SET NUMERIC_ROUNDABORT OFF \n GO \n "; 

我作爲

SqlCommand cmd = new SqlCommand(query_prefix + "SELECT UserID,FirstName,MiddleName,LastName FROM mydb.dbo.UserInfo where UserID=10277",con); 

使用我添加了 「\ n」 個以上,因爲SET ANSI_NULLS ON GO SET ANSI_PADDING ON GO是給錯誤 「GO附近有語法錯誤」。在管理工作室中,如果GO處於換行符,那麼我不會得到不正確的語法錯誤,否則我會這樣做。所以我添加了「\ n」,但它仍然會拋出錯誤。

那麼如何從代碼中設置這些數據庫選項?我不能使用程序。

回答

3

GO是SSMS中的批處理分隔符,它不是SQL命令,不能包含在像這樣的查詢中。

3
  • 打開連接
  • 創建一個SqlCommand對象執行SET ANSI_NULLS ON和SET_ANSI_PADDING_ON與ExecuteNonQuery方法
  • 執行SELECT語句作爲單獨的SqlCommand在同一個連接

示例代碼可發現在這SO post。如果適合您的環境,也可以在數據庫級別爲這些設置設置默認值。