存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上

时间:2013-09-05 16:52:15

标签: c# html asp.net

在新PC中运行项目时出现此错误。为了避免这种情况,我必须每次都复制粘贴新的连接字符串..有什么办法可以避免这种情况...我有3个不同的数据库及其非常烦人的O_O

SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\Users\\Yoro\\Desktop\\WAPent 3.0 (1)\\WAPent 3.0\\WAPent 3.0\\WAPent 2.0\\WAPent 2.0\\App_Data\\LoginStuff.mdf;Integrated Security=True;User Instance=True");

Web配置代码

    <connectionStrings>
  <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
   providerName="System.Data.SqlClient" />
  <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\LoginStuff.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>

6 个答案:

答案 0 :(得分:4)

在web.config中,您正在使用| DataDirectory |这是替换数据目录的路径。这是通过使用

设置的
AppDomain.CurrentDomain.SetData("DataDirectory", newpath)

当你没有设置| DataDirectory |时当它是一个Web项目时,它默认为App_Data文件夹。 因此,查看代码时,DataDirectory表示的路径可能不包含数据库文件。

有关datadirectory的更多信息,请查看此(较旧的)article

答案 1 :(得分:3)

打开服务器资源管理器,右键单击数据库,选择右下角的属性。将出现一个属性窗口;复制连接字符串并在您的应用程序中使用它。例如,在我的应用程序中:

SqlConnection sconnection = new SqlConnection(@"Data Source=(LocalDB)\v11.0;
AttachDbFilename=C:\Users\Taha\Documents\Visual Studio 2013\Projects\Finder\Finder\App_Data\Userdb.mdf;
Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");

sconnection.Open();

答案 2 :(得分:2)

这个问题通常发生在VS 2012中,我也遇到过这个问题。 要解决它,您需要愚弄这些步骤: 1)右键单击.mdf文件 - &gt;选择服务器资源管理器下的修改连接。 2)弹出窗口将出现 - >单击高级按钮 - &gt;选择(LocalDB)\ v11.0作为DataSource值

enter image description here enter image description here

还要确保在webconfig文件中对DataSource =(LocalDB)\ v11.0进行更改 你做完了。生活!!

答案 3 :(得分:0)

首先,您的数据库必须位于项目中bin文件夹以外的其他位置; 然后,您的连接必须声明如下:

SqlConnection con = new SqlConnection(TABLE1TableAdapter.Connection.ConnectionString);

如果您有DataGridView,可以单击Choose Data Scource,并将您的表作为数据库的源添加。(在我的示例中,该表名为TABLE1。)然后,visual studio自动创建DataSet,DataBinding和一个TableAdapter。 TableAdapter(TABLE1TableAdapter)包含数据库所需的ConnectionString作为属性。  附:我有这个问题,经过大量的工作,我找到了这个解决方案。我希望它对你也有所帮助。

答案 4 :(得分:0)

当我在同一个DBContext中使用两个连接字符串时出现此错误,例如我尝试在连接字符串中连接到sql server并在另一个连接字符串中连接到sql express文件:

    public MyDBContext(bool autoDetectChangesEnabled)
    : base("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\MyDB.mdf;User Instance=false;Integrated Security=True;MultipleActiveResultSets=True")
    {
        Initialize(autoDetectChangesEnabled);
    }

    public MyDBContext()
     : base("data source=(LOCAL)\\SQLEXPRESS;initial catalog=MyDB;persist security info=True;user id=user;password=pass;MultipleActiveResultSets=True;App=EntityFramework")
    {
        Initialize(true);
    }

答案 5 :(得分:-1)

退出Visual Studio。

再次运行Visual Studio。

不要从上一个程序列表打开项目,使用打开项目打开它 - &gt;浏览程序。

转到服务器资源管理器:如果.mdf文件图标有一点红色X,则创建一个新表,无需在表中输入任何内容。只需更新它。

首先,您会看到提示:选择

在第二个提示中,选择 YES :小红色X应该消失。

删除刚刚创建并更新的表格。

这解决了我的问题。