我寫了一個非常小的C#程序,使用非常小的SQL Server數據庫,純粹是爲了一些學習&測試目的。數據庫被用在這個新的項目中,而不是其他地方。但是,我在運行程序無法運行的調試時遇到問題,因爲數據庫「正在被另一個進程使用」。數據庫正在被另一個進程使用......但是什麼進程?
如果我重新啓動我的機器,它會重新工作,然後幾個測試運行後,我會再次得到了同樣的問題。
我發現報道在互聯網上很多很多類似的問題,但找不到任何明確的答案如何解決這個問題。首先,如何找出使用我的.mdf & .ldf文件的「其他進程」?那麼,我怎麼才能讓這些不被髮布的文件發佈,以便一次又一次地阻止這種發生的時間?!?
我是新來的VS2010,SQL服務器& C#,所以請你給我任何答覆相當的描述!
這是我的代碼,正如你所看到的,你不能得到任何更基本的東西,我當然不應該遇到這麼多問題!
namespace MySqlTest
{
public partial class Form1 : Form
{
SqlConnection myDB = new SqlConnection(@"Data Source=MEDESKTOP;AttachDbFilename=|DataDirectory|\SqlTestDB.mdf;Initial Catalog=MySqlDB;Integrated Security=True");
SqlDataAdapter myDA = new SqlDataAdapter();
SqlCommand mySqlCmd = new SqlCommand();
string mySQLcmd;
int myCount;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("myDB state = " + myDB.State.ToString());
//Open SQL File
myDB.Open();
MessageBox.Show("myDB state = " + myDB.State.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
myCount++;
MessageBox.Show("myCount = " + myCount.ToString());
//Insert Record Into SQL File
mySqlCmd.Connection = myDB;
mySqlCmd.CommandText = "INSERT INTO Parent(ParentName) Values(myCount)";
myDA = new SqlDataAdapter(mySqlCmd);
mySqlCmd.ExecuteNonQuery();
}
private void button3_Click(object sender, EventArgs e)
{
//Read Record From SQL File
}
private void button4_Click(object sender, EventArgs e)
{
//Read All Records From SQL File
}
private void button5_Click(object sender, EventArgs e)
{
//Delete Record From DQL File
}
private void button6_Click(object sender, EventArgs e)
{
MessageBox.Show("myDB state = " + myDB.State.ToString());
//Close SQL File
myDB.Close();
MessageBox.Show("myDB state = " + myDB.State.ToString());
}
private void button7_Click(object sender, EventArgs e)
{
//Quit
this.Close();
}
}
}
第一次運行應用程序時是否收到相同的錯誤消息?如果第二次出現此錯誤,我猜你的應用程序沒有正確關閉數據庫連接。 – 2012-02-08 14:45:47
當我第一次運行程序時,它工作正常,並繼續工作,但我正在調試並停止程序,而沒有按時邏輯地完成它。雖然沒有出現這種情況,但它可能與我在不關閉數據庫的情況下停止調試有關。雖然VS2010不會處理?!? – 2012-02-08 14:56:43