[英]How to run non-persistent queries in Visual Studio
在Visual Studio中使用查詢設計功能時,我在測試期間在SQL數據庫或Microsoft Access數據庫上運行的所有查詢都是持久性的。 這意味着它們實際上會更改表中的數據。 在測試程序運行之前,有沒有辦法使查詢持久化? 使用C#作為編程語言,使用.NET作為框架(如果重要)。 還需要了解使用MS Access或SQL數據庫執行此操作的過程。
您可以在C#中執行事務,類似於在SQL中使用事務的方式。 這是一個例子:
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction("SampleTransaction");
//Execute query here
Query details
//check if test environment
bool testEnvironment = SomeConfigFile.property("testEnvironment");
if (!testEnvironment) {
transaction.Commit();
} else {
transaction.Rollback();
}
這是有關C#中交易的文檔: https : //msdn.microsoft.com/zh-cn/library/86773566%28v=vs.110%29.aspx
在測試過程中,VS應該可以為您創建正在處理的SQL數據的本地副本。 它保存在bin文件夾中。 看看這個:
https://msdn.microsoft.com/zh-CN/library/ms246989.aspx
一旦完成測試,您可以簡單地將其更改為指向要隨應用程序更改的數據庫。
我不知道一種確切地獲得您所要求的方法,但是我認為有一種方法可以接近您想要的行為:
使用Microsoft SQL Server時,如果使用名稱(#tableName)開頭的哈希表創建表,則會話結束時將丟棄該表。
您可以利用此方法獲得所需行為的一種方法是將工作表復制到臨時表中,然后在臨時表而不是活動表上工作。
為此,請使用如下所示的內容:
SELECT * INTO #tempTable FROM liveTable
這將創建liveTable的完整副本,其中包含所有相同的列和行。 完成后,該表將自動刪除,並且不會進行永久更改。
這對於在大型數據集的同一子集上執行的一系列查詢也很有用。 將數據子集選擇到較小的臨時表中,可以使后續查詢的速度比必須從完整數據集中重復選擇的查詢快得多。
請記住,連接一旦關閉,所有數據都會隨之流逝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.