7

当我在新 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");

网页配置代码

    <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>
4

8 回答 8

4

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

AppDomain.CurrentDomain.SetData("DataDirectory", newpath)

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

有关数据目录的更多信息,请查看这篇(较早的)文章

于 2013-09-05T17:34:41.417 回答
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();
于 2016-04-18T09:10:22.187 回答
2

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

在此处输入图像描述 在此处输入图像描述

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

于 2014-09-10T09:49:56.770 回答
0

您应该检查您的连接字符串。当您尝试附加 sql 文件时,连接字符串应如下所示: DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|PharmacyDB.mdf;Database=PharmacyDB;Integrated Security=True

于 2017-05-07T22:40:15.040 回答
0

意识到我正在复活一个老话题,但我的搜索把我带到了这里,对我有用的解决方案没有包含在回复中。

我使用 mdf 文件作为项目的数据库,并通过在 VS 中使用服务器资源管理器,我准确地构建了我的连接字符串,如下所示:

string _connectionString = $"Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename={System.IO.Directory.GetCurrentDirectory() + "\\Database.mdf"};Integrated Security=True";

似乎正确,但我仍然收到同样的错误。经过反复试验,我发现问题不在于连接字符串,而在于 mdf 文件属性。“复制到输出目录”设置最初设置为“不复制”。将此设置为“如果更新则复制”为我解决了这个问题。

在此处输入图像描述

于 2021-09-12T04:55:13.877 回答
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);
    }
于 2017-08-09T07:51:27.560 回答
0

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

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

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

于 2016-12-15T18:48:37.023 回答
-1

退出 Visual Studio。

再次运行 Visual Studio。

不要从最后一个程序列表中打开您的项目,使用打开项目 -> 浏览程序打开它。

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

首先你会看到一个提示:选择NO

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

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

这为我解决了这个问题。

于 2016-07-31T01:50:15.817 回答