Visual Studio 进程无法访问文件'bin\debug',因为另一个进程正在使用该文件

avwztpqn  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(344)

这是我的代码我已经尝试了每一步我可以找到我已经移动con.close();之前和之后,它仍然不工作,请指导我该怎么做,谢谢,我下面这个youtube视频,使crud操作https://www.youtube.com/watch?v=C7ukAjQtsxE

using System.Data;
using System.Data.SqlClient;
namespace crudingtime
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        SqlConnection con = new SqlConnection("Data Source=DESKTOP-6381H14\\SQLEXPRESS;Initial Catalog=yarabthis;Integrated Security=True");
        private void Form1_Load(object sender, EventArgs e)
        {
            GetEmpList();
        }

        private void imtired_Click(object sender, EventArgs e)
        {
            con.Open();
            int id = int.Parse(idbox.Text);
            string fname=fnametxt.Text, lname=lnametxt.Text;
            SqlCommand c = new SqlCommand("exec ughh'"+id+"','"+fname+"','"+lname+"','",con);
            con.Close();
            MessageBox.Show("Successfully inserted");
        }
        void GetEmpList()
        {
            SqlCommand c = new SqlCommand("exec Listughh", con);
            SqlDataAdapter sd=new SqlDataAdapter(c);
            DataTable dt = new DataTable();
            sd.Fill(dt);
            dataGridView1.DataSource = dt;
        }
    }
}```
drnojrws

drnojrws1#

不要尝试在窗体类级别持久化连接-因为这样就无法控制何时释放它。
所以,试着这样说,并且总是有一个using代码块(它会为你清理所有的连接)。
我们还不清楚为什么这里有一个公共窗体方法,所以我们暂时不讨论这个问题。
我假设硬编码的连接字符串只是用于这篇文章,而不是到处都在使用硬编码的连接字符串-(不要这样做!!!)。
你把它标记为asp.net,所以我们假设这是一个网页,对吗?
因此,这一“航空法规”应该足够了:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            GetEmpList();
    }

    private void imtired_Click(object sender, EventArgs e)
    {
        int id = int.Parse(idbox.Text);
        SqlCommand c = new SqlCommand("ughh");
        c.Parameters.Add("@ID", SqlDbType.Int).Value = id;
        c.Parameters.Add("@fname", SqlDbType.NVarChar).Value = fnametxt.Text;
        c.Parameters.Add("@lname", SqlDbType.NVarChar).Value = lnametxt.Text;
        MyRstP(c, false);

        MessageBox.Show("Successfully inserted");
    }
    void GetEmpList()
    {
        SqlCommand c = new SqlCommand("Listughh");
        DataTable dt = new DataTable();
        DataGridView1.DataSource = MyRstP(c);
        DataGridView1.DataBind();
    }

    public DataTable MyRstP(SqlCommand cmdSQL, bool returnData = true)
    {
        DataTable rstData = new DataTable();
        using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
        {
            using (cmdSQL)
            {
                cmdSQL.Connection = conn;
                conn.Open();
                cmdSQL.CommandType = CommandType.StoredProcedure;
                if (returnData)
                {
                    rstData.Load(cmdSQL.ExecuteReader());
                }
                else
                {
                    cmdSQL.ExecuteNonQuery();
                }
            }
        }
        return rstData;
    }

至于那个正在使用的文件。
重新启动计算机。
因此,“隔离”你的连接例程。不要试图在窗体/类级别持久化连接,将你的连接字符串移到config或settings中。(另外一个好处是你可以使用连接构建器)。

相关问题