我需要從我的c#應用程序運行一個文件中的sql腳本。 問題是它在不同的數據庫上創建一個執行命令的對象。C#SQL Server腳本更改數據庫問題
在腳本,每次我需要改變它使用的命令
USE [databasename]
,並因爲有許多對象創建它使用命令GO
了很多次了當前數據庫的時間,所以我讀該文件,直到我找到一個GO命令並在數據庫中運行該句子;到目前爲止這麼好,但是在命令運行之後,連接返回到默認數據庫(在這種情況下是master),忽略最後一個USE語句。
這是我用來讀取文件並執行腳本的代碼。
using (StreamReader reader = new StreamReader(databaseScriptFile)) { DatabaseFactory.CreateDatabase() Database db = new SqlDatabase(connectionstring); txbuilder = new StringBuilder(); bool lastExecute = true; while (!reader.EndOfStream) { text = reader.ReadLine(); if (text.Trim().ToUpper() != "GO") { lastExecute = false; txbuilder.AppendLine(text); } else { lastExecute = true; db.ExecuteNonQuery(CommandType.Text, txbuilder.ToString()); txbuilder.Length = 0; } } //Make sure that the last sentence is executed if (!lastExecute) db.ExecuteNonQuery(CommandType.Text, txbuilder.ToString()); }
看來,它會清除各的ExecuteNonQuery命令執行後sp_reset_conection的連接(這是我在探查獲得)
是否有acomplish這個任何優雅和簡單的方法?
感謝
這與'Enterprise-Library'有什麼關係? – 2010-12-03 23:59:43