问题描述
好的,
我有一个与我的 sql 数据连接交互的页面。它尝试运行一个存储过程,但每次我运行它时,它都会锁定显示此错误的数据库:
这是连接和存储过程的触发代码` FileUpload1.SaveAs(Server.MapPath("images//" + FileUpload1.FileName)); string Image = MapPath("images//" + FileUpload1.FileName);
sqlConnection con = new sqlConnection(@"Data Source=.\sqlEXPRESS;AttachDbFilename=|DataDirectory|\BOOKS.mdf;Integrated Security=True;User Instance=True");
sqlCommand cmd = new sqlCommand("AddaBook",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Title",sqlDbType.NVarChar).Value = txtTitle.Text;
cmd.Parameters.AddWithValue("@Image",sqlDbType.NVarChar).Value = Image;
cmd.Parameters.AddWithValue("@Author",sqlDbType.NVarChar).Value = txtAuthor.Text;
cmd.Parameters.AddWithValue("@PublishDate",sqlDbType.DateTime).Value = txtPublishDate.Text;
con.open();
cmd.ExecuteNonQuery();
con.Close();
cmd.Connection.Close();
lblUploadResult.Text = "File uploaded successfully.";
lblUploadResult.ForeColor = System.Drawing.Color.ForestGreen;
}`
感谢任何帮助,永远感谢您!
解决方法
尝试将您的 mdf 文件移出 OneDrive。有时,当 OneDrive 执行上传或它执行的许多其他进程之一时,它会锁定文件 - 特别是来自系统用户的文件。
,这是说您的数据库正在使用中,因此您无法访问它。
确保没有访问数据库 without closing the connection
中的其他代码。
您也可以使用以下内容更新代码,因为删除了一些不需要的行。
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BOOKS.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmd = new SqlCommand("AddaBook",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Title",SqlDbType.NVarChar).Value = txtTitle.Text;
cmd.Parameters.AddWithValue("@Image",SqlDbType.NVarChar).Value = Image;
cmd.Parameters.AddWithValue("@Author",SqlDbType.NVarChar).Value = txtAuthor.Text;
cmd.Parameters.AddWithValue("@PublishDate",SqlDbType.DateTime).Value = txtPublishDate.Text;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
lblUploadResult.Text = "File uploaded successfully.";
lblUploadResult.ForeColor = System.Drawing.Color.ForestGreen;
,
您已经打开了文件,只是不知道。例如,如果您尝试打开一个名为 Test.txt 的文本文件(或者相反的一个已经打开的 .mdf 数据库文件),那么您将收到此错误,这也是您可能会发现其他错误的原因行,但都与第一个错误有关。
对于数据库,事情可能会变得有点棘手,因为您可以连接到数据库,但有时会出现错误并在不关闭连接或进程的情况下被踢出系统......此时当前正在运行但未知进程可能使连接保持活动状态。您可以查看系统上所有打开的进程,或者查看是否错误地打开了连接,然后在尝试通过应用程序打开它之前将其关闭。