2012-02-13 80 views
0

我收到错误如何维护SQL Server数据库的调试版本?

无法复制文件 ”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; 
    } 
} 
} 
+0

你的问题不清楚。 – 2012-02-13 17:57:47

+0

有两个问题,首先,我正确地说明VS2010在调试时需要拷贝和维护数据库的方式,其次,如果我对问题1正确,那么为什么系统试图删除并替换我的调试数据库的版本?基本上,为什么我会得到这些错误?!? – 2012-02-13 18:42:37

+0

您使用的是实际的SQL Server数据库文件还是SQL Server Compact? – 2012-02-13 20:13:11

回答

0

我以我在MS SQL Server Management Studio中创建的,我把它添加到VS2010 C#项目作为现有项目的新的数据库现在已经解决了这一点,而比新项目。

我希望这可以帮助任何人遇到同样令人沮丧的问题,我做到了!