-1

到目前为止,我一直在使用以下连接字符串:

public static String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Ahmad\documents\visual studio 2010\Projects\DBtestApp1\DBtestApp1\TestDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

但是,由于 MDF 文件与运行自身的 EXE 位于同一目录中,并且由于该目录可以更改,所以我现在要使用Directory.GetCurrentDirectory()..检索当前目录

问题是,这样的字符串分配不起作用:

connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=\"" + currentDirectory + "TestDB.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True";

在哪里currentDirectory保存Directory.GetCurrentDirectory()..的输出

那么解决方案是什么?

4

2 回答 2

1

这实际上应该有效,但根据Directory.GetCurrentDirectory()路径的返回值可能会被破坏。

而不是连接字符串中的路径,您应该为此使用Path.Combine()提供的内部System.IO,它将处理要连接的部分之间的额外/缺失的反斜杠:

string DbFile = Path.Combine(Directory.GetCurrentDirectory(), "TestDB.mdf");

然后,您应该能够简单地将这个字符串添加到您的完整连接字符串中,这也可以使用String.Format()

string connectionString = String.Format(@"...AttachDbFilename={0};Integrated...", Path.Combine(Directory.GetCurrentDirectory(), "TestDB.mdf"));

我还没有尝试过,但它不应该只使用.\TestDB.mdf文件名吗?还是必须是绝对路径?

于 2012-09-25T12:02:28.253 回答
0

你总是可以把它放在 App_Data 文件夹中(理想情况下它应该驻留的地方)并像这样调用它。

Data Source=|DataDirectory|\TestDB.mdf;
于 2012-09-25T12:00:33.327 回答