跨多个用户的本地数据库的连接字符串

时间:2012-10-09 17:50:57

标签: sql database vb.net

如何以一种允许您将项目文件夹从一台计算机传输到另一台计算机的方式使用本地数据库上的连接字符串,而无需修改连接字符串?

不喜欢这个

connection_String As String = "Data Source=C:\Users\Kyle\Desktop\CSCI_388_Group_Project\CSCI_388_Group_Project\CSCI_388_Group_Project\CSCI_388_Group_Project_Database.sdf"

更像这样

connection_String As String = "Data Source=|DataDirectory|\CSCI_388_Group_Project_Database.sdf"

如果我尝试将第二个示例输入到数据库属性下的连接字段中,则会出现非法字符错误。

3 个答案:

答案 0 :(得分:3)

Environment类包含您需要的大部分路径。

您可以致电Environment.GetFolderPath获取特殊目录。例如,要获取我的文档目录,请调用Environment.GetFolderPath(Environment.SpecialFolder.Personal)

您可以在此处浏览所有特殊文件夹:
http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

具体而言,在您的示例中,您将使用以下内容:

connection_String As String = _
    "Data Source=" & 
    Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
        "CSCI_388_Group_Project_Database.sdf" )

替代:
是否可以问用户?如果它在他们的桌面上,他们可能会移动它。

答案 1 :(得分:2)

如果您决定将sdf文件保留在exe所在的同一文件夹中,那么您可以这样做。

Dim ExeFolder As String = AppDomain.CurrentDomain.BaseDirectory
Dim connection_String As String = "Data Source=" & ExeFolder & "CSCI_388_Group_Project_Database.sdf"  

希望它有所帮助!

答案 2 :(得分:1)

一种简单的方法是使用环境变量来指定文件夹的路径。

然后在VB程序中使用Environ function获取环境变量设置并使用字符串操作来构建连接字符串。

如果未设置环境变量,您将需要默认值。

但是,当您启动应用程序时,可以在将设置环境变量的脚本中执行此操作。

第二种方法是在应用程序命令行上指定路径名,以便在启动应用程序时,它将使用命令行指定路径。

第三种方法是使用您使用的Windows注册表项。然后,类似于环境变量,您在Windows注册表中查询文件夹路径,然后从中构建连接字符串。

使用第三种方法,您可以让应用程序安装程序插入注册表项。

第四种方法是使.ini文件包含文件夹路径的条目。