2013-04-18 54 views
0

我有一個應用程序JigSaw,它使用了數據庫TopScores.mdf它沒有包含在項目中。我想要做的是讓應用程序在應用程序的文件夾中找到數據庫。例如,如果我將.exe文件和數據庫文件從調試文件夾移動到桌面,應用程序應該使用桌面數據庫,而不是在調試文件夾中搜索它。當我將解決方案移動到另一個目錄時,爲什麼我在使用「AttachDbFileName」時出現「數據庫已存在」?

如果我讓他們在debug文件夾中是沒有問題的,並與數據庫的連接建立起來,但是當我把它們放在桌面上我得到這樣的:發生在您的應用程序

未處理的異常。如果您單擊繼續,應用程序將忽略此錯誤並嘗試繼續。數據庫'D:\ Programing \ Projects Visual Studio 2010 \ JigSaw \ JigSaw \ bin \ Debug \ TopScores.mdf'已經存在。選擇不同的數據庫名稱。無法附加文件 'C:\用戶\阿迪\桌面\拼圖\ TopScores.mdf' 數據庫TopScores.mdf

我的連接字符串是:

string appPath = Path.GetDirectoryName(Application.ExecutablePath); 
string connString = @"server =.\sqlexpress; Database=TopScores.mdf; trusted_connection=TRUE; AttachDbFileName= "[email protected][email protected]"\TopScores.mdf"; 
conn = new SqlConnection(connString); 

對不起我的英語不好:(

回答

4

發生這種情況,因爲當您連接到它沒有充分利用User Instance=true;。你從字面上告訴SQL服務器數據庫從你第一次加載它從目錄連接到運行SQL實例。

從正在運行的SQL實例手動分離數據庫,將連接字符串更改爲使用User Instance=true;,從Debug文件夾運行它,然後從Desktop運行它,您將看到成功。

+0

謝謝,但我認爲我遵循了你的步驟,我仍然得到同樣的錯誤。我錯過了什麼嗎? –

+0

@adrian,您是否通過Management Studio連接到服務器並手動分離數據庫? –

+0

我得到這個:「不能分離嫌疑人或正在恢復的數據庫,它必須修復或丟棄。」我應該檢查Drop Connections框然後嘗試分離它嗎? –

2

將連接字符串中的設置從「Database = TopScores.mdf」更改爲不同的內容,例如:「Database = TopScores_brand_new_connection」不要在任何文件/數據庫服務器中創建/刪除/重命名文件。只在連接字符串中進行。不要添加點,擴展名等

-1

只需重命名ur.mdf文件...例如。從MNGMT.mdf到M_1(你想要的東西)。更改您的聯繫串......所以希望這將有助於ü..在我的情況下,它被正確地執行在其他電腦,以及在我的電腦..只是複製你的.mdf文件到你的項目..

string dbPath = Path.GetDirectoryName(Application.ExecutablePath) + "\\M_1.mdf"; 
string myServer = Environment.MachineName; 
DataTable servers = SqlDataSourceEnumerator.Instance.GetDataSources(); 
      for (int i = 0; i < servers.Rows.Count; i++) 
      { 
       if (myServer == servers.Rows[i]["ServerName"].ToString()) ///// used to get the servers in the local machine//// 
       { 
        if ((servers.Rows[i]["InstanceName"] as string) != null) 
         servername = (servers.Rows[i]["ServerName"] + "\\" + servers.Rows[i]["InstanceName"]); 
        else 
         servername = ""+servers.Rows[i]["ServerName"]; 
       } 
      } 
connetionString = "Data Source=" + servername + ";AttachDbFilename=" + dbPath + ";Integrated Security=True;Pooling=False;User Instance=True"; 
相關問題