首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在部署时硬编码数据库的路径吗?

我应该在部署时硬编码数据库的路径吗?
EN

Stack Overflow用户
提问于 2014-03-10 05:36:44
回答 3查看 635关注 0票数 1

我使用Visual Basic 2010和SSMS 2012创建了一个软件,我希望部署它。这里的问题是我应该如何去做呢?我知道我可以创建一个可执行文件.exe,这已经是VS2010的一件好事了,我也认为在安装主安装程序之前安装SSMS-2012也是一件好事。此外,数据库的脚本将被生成,然后在客户端的计算机上运行,这使得数据库能够被附加。然而,这里的问题是,如果我当前在Visual Basic中硬编码数据库文件(.mdf)的目录,我的连接字符串是这样的:

代码语言:javascript
复制
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

当SSMS 2012安装在任何计算机上时,服务器(基于计算机的名称)可能会在所有计算机中有所不同。那么这能行得通吗?或者还有其他选择吗?

附言:我是个初学者,所以请对我手下留情:)

EN

回答 3

Stack Overflow用户

发布于 2014-03-10 13:19:33

如果您的问题只出在另一台pc上的计算机名称上,那么尝试将其连接到您的myServerAddress变量上。使用

代码语言:javascript
复制
My.Computer.Name 

获取目标计算机的名称。

我想This也是一个很好的链接,虽然它是一个Access数据库,但使用了相同的概念(使用DataDirectory)。

票数 0
EN

Stack Overflow用户

发布于 2014-03-10 16:28:03

我不建议对连接字符串进行硬编码,因为这会将您的应用程序绑定到非常特定的部署场景。如果客户想要使用其现有的SQL Server实例,该怎么办?如果客户为SQL Server Express安装创建一个命名实例(例如,SERVERNAME\SQLEXPRESS),该怎么办?迟早你会改变你的代码来反映不同的情况,你会做同样的事情,你现在已经可以做了。

在.NET中,您可以将连接字符串存储在应用程序配置文件中。它被命名为Exe文件,但具有.config扩展名(例如MyExeName.exe.config)。在Visual Studio中,如果项目中还不存在文件(“应用程序配置文件”,app.config),您需要做的就是将其添加到项目中。在构建时,它将重命名为Exe-name加上.config。有关详细信息,请参阅此link

对于您的场景,您应该有一个如下所示的配置文件。它通过使用“”引用本地计算机。作为服务器名称。因此,如果这是您的默认场景,则不必在部署后进行更改:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="MyConnection" 
         connectionString="Data Source=.;Initial Catalog=myDatabase;Integrated Security=SSPI"/>
  </connectionStrings>
</configuration>

在代码中,可以使用ConfigurationManager类访问连接字符串(可能需要添加对System.Configuration程序集的引用)。您可以在创建连接时使用获取到的连接字符串:

代码语言:javascript
复制
Dim connStr = ConfigurationManager.ConnectionStrings("MyConnection").ConnectionString
Using conn = new SqlConnection(connStr)
    conn.Open()
    ' Use the connection
End Using

总而言之:您需要在部署中添加一个默认配置文件,其中包含适用于任何服务器名称的连接字符串。如果客户希望将数据库放在不同的实例或另一台服务器上,只需更改连接字符串-但如果客户对默认配置满意,则不必这样做。正如您所看到的,这并不比硬编码更费力,但它将使您的部署更加灵活。

票数 0
EN

Stack Overflow用户

发布于 2014-03-16 19:05:05

我在一家提供企业解决方案的大公司工作,我们处理这件事的方式非常简单。

在此之后,您需要做的就是建立到服务器的连接,创建数据库并运行表和/或视图创建脚本。

我看到你提到了附加一个MDF文件,但我看不出你有什么理由要这样做。如果您有系统数据,您仍然可以使用相同的脚本或其他脚本插入它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22288493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档