Изменение ConnectionString
Когда я установил myProg.exe на клиентский компьютер, я должен адаптировать connectionString.
Поэтому я открываю файл MyProg.exe.config и модифицирую connectionString, но он не работает.
Тогда я нашел эту статью. Проблема сейчас, когда я изменил доступ к публичному, я не могу скомпилировать / развернуть его.
мой App.config
<?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();
}
}
}
2 ответа
Вы не сказали, что использовали ClickOnce в начале. Там все иначе: файл конфигурации хранится в профиле пользователя. Вы не можете изменить файл послесловий (только пользовательские настройки через ваше приложение).
Чтобы обновить программу ClickOnce новой строкой подключения, я предлагаю следующее:
- Создайте новый пользовательский параметр с именем "SettingsUpgradeNeeded" и установите для него значение
true
в настройках дизайнера Добавьте следующий код в код запуска вашего приложения (Program.cs или App.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, либо в App
класс, который может вернуть строку подключения из SqlConnectionStringBuilder
,
Вы имеете в виду connectionString к вашей базе данных? Если так, это должно быть изменено в вашем классе соединения с базой данных. Строка connectionString на локальном устройстве должна быть похожа на обычный путь, если ваша база данных также хранится локально. Как это:
"C:\\Some_location\\database.extension"
Расширение зависит от типа базы данных, которую вы используете, измените эту строку на местоположение вашей базы данных.