2011-03-16 54 views
0

我有一個類包含我所有的SQL對象,包括進行數據庫連接和執行查詢的方法。CSharp:如何使SQL聲明/設置命令在SQLConnection中保留?

從另一個類,我創建了「數據庫」對象的實例並執行一個查詢來設置,我想在我的查詢是連接上的其餘部分,以保持設定一個變量的值:

DECLARE @InstitutionId NVARCHAR(MAX); 
SET @InstitutionId ='15'; 

執行上述操作後,使用相同的連接,然後執行另一個將使用該變量的查詢,但是返回一個錯誤,指出必須設置InstituionId。

因此,看來一旦我執行第二個查詢,第一個查詢的結果就會丟失。無論如何,我可以擁有上述持久性,還是必須在執行每個查詢時包含Declare和Set命令?當我在Microsoft SQL Server Management Studio中這樣做時,我只需要運行一次,並且它堅持查詢窗口中的所有查詢,這就是爲什麼我認爲(可能天真地)結果會堅持。

感謝,

傑森

回答

0

號,查詢的範圍將只適用於查詢的持續時間。請記住,大多數SQL連接驅動程序將重新使用來自連接池的連接,因此不可能(對於SQL和您的應用程序)跟蹤哪些查詢來自之前的上下文。

根據您的應用程序,你的具體要求,我想補充InstitutionId作爲數據庫類的成員/屬性。數據庫類然後負責將該成員的值作爲查詢參數發送給每個請求:

例如,

command.Parameters.AddWithValue("@InstitutionId",this.InstitutionId); 
+0

謝謝,我覺得情況會如此。 – Jason 2011-03-16 20:31:56

1

把它存儲在數據庫中,你不能。該語句保存狀態,而不是數據庫連接。一旦它超出範圍,你什麼也沒有。想象一下在結束語中的「去」命令,其本質上是等同的。