更改连接字符串
本文关键字:字符串 连接 | 更新日期: 2023-09-27 18:34:17
当我将myProg.exe安装到客户端计算机时,我必须调整connectionString。
所以我打开文件MyProg.exe.config,并修改了connectionString,但它不起作用。
然后我找到了这篇文章.现在的问题是,当我修改对公共的访问时,我无法编译/部署它。
我的应用配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="FrontEnd_Offline.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<system.windows.forms jitDebugging="true" />
<connectionStrings>
<add name="Soft8Exp_ClientConnStr" connectionString="Data Source=xxxxx;Initial Catalog=xxxxx;User ID=sa;Password=xxxxx" providerName="System.Data.SqlClient" />
<add name="Soft8Exp_ClientEntities" connectionString="metadata=res://*/Domain.Entite_T.csdl|res://*/Domain.Entite_T.ssdl|res://*/Domain.Entite_T.msl;provider=System.Data.SqlClient;provider connection string="data source=xxxxx;initial catalog=xxxxx;user id=sa;password=xxxxx;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
<add name="FrontEnd_Offline.Properties.Settings.Soft8Exp_ClientConnectionString" connectionString="Data Source=xxxxx;Initial Catalog=xxxxx;User ID=sa;Password=xxxxx" providerName="System.Data.SqlClient" />
</connectionStrings>
<applicationSettings>
<FrontEnd_Offline.Properties.Settings>
<setting name="NO_ORDRE" serializeAs="String">
<value />
</setting>
</FrontEnd_Offline.Properties.Settings>
</applicationSettings>
</configuration>
和要连接的类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace FrontEnd_Offline.Domain
{
class Connexion : IDisposable
{
public SqlConnection conn;
public SqlConnection GetConnected()
{
try
{
String strConnectionString = ConfigurationManager.ConnectionStrings["Soft8Exp_ClientConnStr"].ConnectionString;
conn = new SqlConnection(strConnectionString);
}
catch (Exception excThrown)
{
conn = null;
throw new Exception(excThrown.InnerException.Message, excThrown);
}
// Ouverture et restitution de la connexion en cours
if (conn.State == ConnectionState.Closed) conn.Open();
return conn;
}
public Boolean IsConnected
{
get { return (conn != null) && (conn.State != ConnectionState.Closed) && (conn.State != ConnectionState.Broken); }
}
public void CloseConnection()
{
// Libération de la connexion si elle existe
if (IsConnected)
{
conn.Close();
conn = null;
}
}
public void Dispose()
{
CloseConnection();
}
}
}
你一开始并没有说你正在使用ClickOnce。那里的情况有所不同:配置文件存储在用户的配置文件中。您无法更改文件后记(只能通过应用程序更改用户设置(。
若要使用新的连接字符串更新 ClickOnce 程序,我建议执行以下操作:
- 创建一个名为"设置需要升级"的新用户设置,并将其设置为
true
设置设计器中的 -
将以下代码添加到应用程序的启动代码(程序.cs或应用.cs(
if (Properties.Settings.Default.SettingsUpgradeNeeded) { Properties.Settings.Default.Upgrade(); Properties.Settings.Default.SettingsUpgradeNeeded = false; Properties.Settings.Default.Save(); }
-
发布新更新。
更改连接的另一种方法是(看到您只在代码中使用SqlConnection
,这更可取(:
- 停止使用"
ConnectionStrings
"部分 - 对于每个连接参数,创建一个设置(例如:数据库服务器、数据库名称等(
- 使用
SqlConnectionStringBuilder
从这些设置生成连接字符串
编辑
您希望用户能够更改连接参数:
- 为连接到数据库所需的每个参数创建用户设置(例如:服务器、数据库、故障转移伙伴、用户名、身份验证方法等(
- 创建一个对话框,您可以在其中配置这些值
- 使用
SqlConnectionStringBuilder
从这些值创建连接字符串 - 将该连接字符串用于所有数据库连接
例:
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();
sb.DataSource = Properties.Settings.Default.DBServerName;
sb.InitialCatalog = Properties.Settings.Default.DBDatabaseName;
sb.IntegratedSecurity = Properties.Settings.Default.DBUseIntegratedSecurity;
if (!sb.IntegratedSecurity)
{
sb.UserId = Properties.Settings.Default.DBUserName;
sb.Password = Properties.Settings.Default.DBPassword;
}
using (SqlConnection conn = new SqlConnect(sb.ConnectionString))
{
...
}
我会在 Program.cs 或可以从 SqlConnectionStringBuilder
返回连接字符串的 App
类中生成一个静态属性。
你的意思是数据库的连接字符串吗?如果是这样,则应在数据库连接类中更改它。如果数据库也存储在本地,则本地设备上的连接字符串应类似于普通路径。喜欢这个:
"C:''Some_location''database.extension"
扩展名取决于您使用的数据库类型,请将此字符串更改为数据库的位置。