2012-02-13 81 views
0

我收到錯誤如何維護SQL Server數據庫的調試版本?

無法複製文件 」j:\用戶\加里\文檔\ Visual工作室 2010 \項目\ MyApp01 \ MyApp01 \ MyApp01.mdf「 到」 斌\調試\ MyApp01.mdf 「 無法訪問該文件 '本\調試\ MyApp01.mdf',因爲它 正在使用由另一個進程的進程。

無法刪除文件」j:\ users \ gary \ documents \ visual studio 2010 \ Projects \ MyApp01 \ MyApp01 \ bin \ Debug \ MyApp01.mdf「。進程 無法訪問文件'j:\ users \ gary \ documents \ visual Studio 2010 \ Projects \ MyApp01 \ MyApp01 \ bin \ Debug \ MyApp01.mdf',因爲它被另一個進程使用爲 。

我一直在努力讓這個問題已經得到解決了近一個星期,但仍無法捉摸一下什麼是錯的。

今天,我已經創建了一個名爲新項目MyApp01 &連接新2列數據庫的同名,我編輯屬性將「複製到輸出目錄」狀態從「複製總是」更改爲「複製如果更新」我的理解是存儲在MyApp01文件夾中的數據庫創建在第一次訪問它時在MyApp01\bin\Debug\文件夾中的測試版本,然後只有在數據庫佈局發生更改時才被覆蓋。是否正確?如果是這樣,爲什麼我要獲取這些文件似乎暗示系統試圖替換數據庫的\ bin \ Debug \版本的錯誤?

我第一次運行應用程序&它似乎工作得很好,我的數據庫更新了三條記錄,這些記錄顯示在Form2和我退出成功。但是,在VS2010中,我使用服務器資源管理器來顯示錶數據,並將數據庫顯示爲空,因此我相信它暗示它正在查看MyApp01文件夾&中的版本,而不是MyApp01\bin\Debug\文件夾中的版本。因此我再次運行程序,這是我得到這些錯誤的地方。

所以,再一次,是我的數據庫被複制,並保持正確的方式理解,如果是的話(或者如果不!)爲什麼我收到這些錯誤告訴我,該系統試圖取代\bin\Debug\版本的數據庫?

這是我的代碼:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.SqlClient; 

namespace MyApp01 
{ 
public partial class Form1 : Form 
{ 
    int myCount; 

    string myDBlocation = @"Data Source=MEDESKTOP;AttachDbFilename=|DataDirectory|\MyApp01.mdf;Integrated Security=True;User Instance=False"; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     myCount++; 
     //Insert Record Into SQL File 
     myDB_Insert(); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     Form2 form2 = new Form2(); 
     form2.Show(); 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     //Quit 
     myDB_Close(); 
     this.Close(); 
    } 

    void myDB_Insert() 
    { 

     using (SqlConnection myDB = new SqlConnection(myDBlocation)) 
     using (SqlCommand mySqlCmd = myDB.CreateCommand()) 
     { 
      mySqlCmd.CommandText = "INSERT INTO MyAppTbl(MyData) VALUES(@MyValue)"; 
      mySqlCmd.Parameters.AddWithValue("@MyValue", myCount); 
      myDB.Open(); 
      MessageBox.Show("State = " + myDB.State); 
      mySqlCmd.ExecuteNonQuery(); 
      myDB.Close(); 
      MessageBox.Show("State = " + myDB.State); 
     } 
     return; 
    } 

    void myDB_Close() 
    { 
     using (SqlConnection myDB = new SqlConnection(myDBlocation)) 
     using (SqlCommand mySqlCmd = new SqlCommand()) 
     { 
      myDB.Close(); 
     } 
     return; 
    } 
} 
} 
+0

你的問題不清楚。 – 2012-02-13 17:57:47

+0

有兩個問題,首先,我正確地說明VS2010在調試時需要拷貝和維護數據庫的方式,其次,如果我對問題1正確,那麼爲什麼系統試圖刪除並替換我的調試數據庫的版本?基本上,爲什麼我會得到這些錯誤?!? – 2012-02-13 18:42:37

+0

您使用的是實際的SQL Server數據庫文件還是SQL Server Compact? – 2012-02-13 20:13:11

回答

0

我以我在MS SQL Server Management Studio中創建的,我把它添加到VS2010 C#項目作爲現有項目的新的數據庫現在已經解決了這一點,而比新項目。

我希望這可以幫助任何人遇到同樣令人沮喪的問題,我做到了!