在运行时构建连接字符串并将其保存在c#windows app的应用程序设置中

时间:2012-12-21 08:45:28

标签: c# windows deploying

我正在使用sql server 2005和visual studio 2008构建一个C#windows应用程序 在客户端计算机上部署应用程序。我按此顺序执行此操作

  1. 我在我的应用程序中使用相同的用户/密码(即sa / pass)安装sql server 2005。
  2. 我运行我的Windows应用程序msi文件。它在sql server 2005中安装我的数据库。
  3. 当我尝试运行应用程序时,由于客户端计算机上的计算机名称和sql server实例名称不同而导致我失败。我在连接字符串中收到错误。我需要一种方法来提取目标计算机名和sql服务器实例,并在部署期间将其保存在我的应用程序设置中(在我的c#代码中使用,以便我可以在运行时创建连接字符串。)

    要解决问题我正在做的是我在客户端的计算机上安装visual studio并编辑源代码以更改机器名和sql server实例。然后我的Windows应用程序运行。我不想以这种方式解决我的问题,而是需要一种方法,我可以在部署时设置我的参数或留给你建议一个更好的方法。

    我会请你帮帮我。

3 个答案:

答案 0 :(得分:0)

Google会为您提供很多选择。复制数据库时是否遵循了正确的步骤。

请点击这些链接http://blogs.msdn.com/b/sreekarm/archive/2009/09/11/move-a-database-from-one-server-to-another-server-in-sql-server-2008.aspx

这将回答你的DBA Stack Exchange

同时发布您获得的确切错误消息。找出问题

会很有用

答案 1 :(得分:0)

使用SQL CE将需要大量的返工。

完整安装顺序为:

  1. 安装Windows Installer 3.1(如果未安装)
  2. 安装.Net 2.0(如果未安装)
  3. 检查是否尚未安装SQL:
  4.   

    HKLM“SOFTWARE \ Microsoft \ Microsoft SQL   Server \ $ {instance_name} \ MSSQLServer \ CurrentVersion“”CurrentVersion“

    然后您需要安装SQL Server:

      

    $ {installer_path} \ SQLEXPR.exe -q / norebootchk / qn   reboot = ReallySuppress addlocal = all INSTANCENAME = $ {instance_name}   SAPWD = $ {password} SECURITYMODE = SQL SQLBROWSERAUTOSTART = 1   SQLAUTOSTART = 1 AGTAUTOSTART = 1 ASAUTOSTART = 0 RSAUTOSTART = 0   DISABLENETWORKPROTOCOLS = 0 ERRORREPORTING = 1 SQMREPORTING = 0 ENABLERANU = 0   ADDUSERASADMIN = 1

    要连接到SQL Server实例,请使用数据链接属性对话框。您需要向用户明确说明如何连接到实例。例如

    enter image description here

    如果使用。\ Instance_Name语法,其中“。” dot表示应该解决问题的客户端PC名称。也可以在连接字符串中使用它。

答案 2 :(得分:0)

因此,如果我理解正确,您已在源代码中硬编码了连接字符串。当然,你已经自费发现这是一个多么糟糕的主意。

您需要在app.config文件中保存该连接字符串。这样,当您将应用程序安装到客户时,只需要更改配置文件,您的代码就可以运行了。

在app.config中插入连接字符串:

  • 右键单击您的项目并选择Properties,然后转到 Settings页面。这将为您创建一个settings.settings文件 项目并将为您的房产打开GUI编辑器。
  • 现在在列名中插入一个字符串(例如 testConnection
  • 从类型列中选择ConnectionString类型
  • 在值列中插入一个对您有效的连接字符串 开发机器

现在,如果您打开app.config,您会注意到一个名为ConnectionStrings的新部分,如下所示:

 <connectionStrings>
    <add name="ProjectName.Properties.Settings.testConnection" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\mytemp.mdb;User Id=admin;Password=;" />
  </connectionStrings>

现在是时候修复你的代码一次又一次 在您拥有硬编码连接字符串的每个地方,用这样的代码替换该代码

 string constring = ConfigurationManager.ConnectionStrings["ProjectName.Properties.Settings.testConnection].ConnectionString;

当我们在这里时,检查是否可以使用LocalDB version of SqlServer Express 2012来删除安装SqlServer的需要。