根数据库位置

时间:2010-11-05 06:27:28

标签: c# sql-server database

我不知道在哪里放置数据库,这样当我将拥有我的最终应用程序.exe时,在它的文件夹中我将有另一个数据文件夹,并在该文件夹中为db.mdf。这是我的连接字符串:

con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Users\\alex\\Documents\\Visual Studio 2010\\Projects\\Network_Remote_Monitoring\\Network_Remote_Monitoring\\data\\bd.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True";

(即我想对数据库进行相对参考,例如AttachDbFilename =“。\ data \ bd.mdf”)

2 个答案:

答案 0 :(得分:2)

  

当我将拥有我的最终应用程序时   .exe,在我的文件夹中   另一个数据文件夹并在该文件夹中   db.mdf

不要那样做。数据库永远不应该存在:

  • 在程序文件夹
  • 在网络驱动器上(以\开头)。

为什么还要这样附上呢?在大多数情况下(我曾经工作过),数据库都在服务器上显式创建。本地数据库应该存在于用户程序数据(NOT DOCUMENTS!)文件夹或共享文件夹中。

检查http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx以获取特殊文件夹列表。

如果您确实需要将数据库保持在本地,则需要ApplicationDataa,LocalApplicationData(未复制)或CommonApplicationData。

答案 1 :(得分:1)

相对路径data\\bd.mdf在连接蜇中不起作用吗?如,

con.ConnectionString = "DataSource=.\\SQLEXPRESS;AttachDbFilename='data\\bd.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True";

否则,您可以使用当前目录快捷方式,例如

string dbdirectory = System.IO.Directory.GetCurrentDirectory() + "\\data\\bd.mdf"
con.ConnectionString = "DataSource=.\\SQLEXPRESS;AttachDbFilename='" 
+ dbdirectory + "';Integrated Security=True;Connect Timeout=30;User Instance=True";

或者您甚至可以打开文件对话框并询问用户他们想要存储程序数据的位置,并从那里获取完整路径。

编辑:这就是你如何实现你想要的,但我建议将数据库存储在其他地方,如@TomTom建议