gpt4 book ai didi

c# - 另一个进程正在使用数据库...但是什么进程?

转载 作者:太空狗 更新时间:2023-10-29 23:01:49 29 4
gpt4 key购买 nike

我编写了一个非常小的 C# 程序,它使用一个非常小的 SQL Server 数据库,纯粹用于学习和测试目的。该数据库仅在这个新项目中使用,别无他处。但是,我在运行程序无法运行的调试时遇到问题,因为数据库“正在被另一个进程使用”。

如果我重新启动我的机器,它会再次工作,然后在几次测试运行后我会再次遇到同样的问题。

我在 Internet 上发现了很多很多类似的问题,但是找不到关于如何解决这个问题的明确答案。首先,如何找出正在使用我的 .mdf 和 .ldf 文件的“其他进程”?那么,我该如何释放这些文件而不是保留这些文件,以便一次又一次地阻止这种情况发生?!?

我是 VS2010、SQL Server 和 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();
}
}
}

最佳答案

最可能的选择:

  1. 您的程序的先前(崩溃)实例
  2. Visual Studio(打开表设计器或类似工具)

您可以检查 1) 使用 TaskManager 和 2) 通过查看服务器资源管理器。您的数据库应该显示一个小红叉,表示“已关闭”。

并且您应该重写代码以尽快关闭连接。使用 try/finally 或 using(){ } block 。

关于c# - 另一个进程正在使用数据库...但是什么进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195443/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com