【问题标题】:error in Connection String in C#C#中的连接字符串错误
【发布时间】:2015-07-08 08:00:01
【问题描述】:

我是 C# 新手。我想在 C# 的输出软件中使用我的 Microsoft SQL Server 数据库文件test.mdf。过去,我只是像这样在 Visual Studio 中复制连接字符串:

Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Home\Documents\test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

如您所见,数据库文件路径为:C:\Users\Home\Documents\test.mdf;

当我在 Visual Studio 2008 中为我的软件创建设置并在另一台 PC 上安装该软件时,出现错误:

尝试为文件 C:\User\Home\Document\test.mdf 附加自动命名数据库失败 ...

所以我想用安装文件夹路径来解决这个文件:

string dir = Application.StartupPath + "\\" + "test.mdf";

但是当我想在 Visual Studio 2008 中运行程序时会出错

string dir = Application.StartupPath + "\\" + "test.mdf";
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=" + dir + ";Integrated Security=True;Connect Timeout=30;User Instance=True");

错误 1 ​​字段初始值设定项无法引用非静态字段, 方法或属性 'phonebook.Form1.dir' C:\Users\Home\Documents\Visual Studio 2008\Projects\电话簿\电话簿\Form1.cs 25 95 电话簿

更新

当我使用时

 SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename="+ Application.StartupPath +" \\test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

错误:

一个或多个文件与数据库的主文件不匹配。如果 您正在尝试附加数据库,请使用 正确的文件。如果这是一个现有的数据库,该文件可能是 已损坏,应从备份中恢复。无法打开用户 默认数据库。登录失败。用户“Home-PC\Home”登录失败。

虽然我在那里复制了test.mdf 文件

【问题讨论】:

  • 尝试使用相对路径,如果文件位于程序根目录中,例如“.\\test.mdf”。
  • 除了修复你的错误,我建议你使用SqlConnectionStringBuilder来创建你的连接字符串,以避免得到无效的值。
  • @Thorarins 这不起作用:[code]SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=./test.mdf;Integrated Security=True;Connect Timeout=30 ;用户实例=True");[/code]
  • 还有这个:SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=.\test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True") ;
  • @ThorstenDittmar 你能给我正确的代码吗?

标签: c# sql-server visual-studio setup-project


【解决方案1】:

正如错误消息所说,在初始化另一个实例字段时,您不能使用一个实例字段的值。无论如何,您可能不希望 dir 作为一个字段。只需将所有这些移动到构造函数的主体中......或者理想情况下,仅在您需要时创建您的SqlConnection。不要在整个应用程序中使用单个实例,而是在每次需要访问数据库时都经历一个“创建、使用、处置”循环。 (理想情况下,也不要在您的 GUI 代码中这样做......)

【讨论】:

  • 我无法解决我的问题。你能给我一个相对正确的代码吗?
  • @soheilyo:没有 - 你没有给出任何指示如何你试图应用我的答案,或者你遇到了什么问题。 Stack Overflow 不是“给我代码”网站。我建议在答案中对您的代码进行相当重大的更改(仅在需要时创建SqlConnection,并在使用后立即处理它)-您是否尝试过实现它?
  • 问题在这里也解决了stackoverflow.com/questions/3500829/…
  • @Thorarins:不,这是一个不同的问题。 OP 遇到了编译时错误,该错误不会出现在该问题中。
  • @Jon 是的,但他的主要问题是他们在我发布的答案中解决的连接字符串,所以可能有助于解决他的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2013-02-11
相关资源
最近更新 更多