“无法复制文件 ”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;
}
}
}
你的问题不清楚。 – 2012-02-13 17:57:47
有两个问题,首先,我正确地说明VS2010在调试时需要拷贝和维护数据库的方式,其次,如果我对问题1正确,那么为什么系统试图删除并替换我的调试数据库的版本?基本上,为什么我会得到这些错误?!? – 2012-02-13 18:42:37
您使用的是实际的SQL Server数据库文件还是SQL Server Compact? – 2012-02-13 20:13:11