-2

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=&quot;data source=xxxxx;initial catalog=xxxxx;user id=sa;password=xxxxx;multipleactiveresultsets=True;App=EntityFramework&quot;" 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();
        }
    }
}
4

2 に答える 2

1

最初に ClickOnce を使用しているとは言いませんでした。そこでは状況が異なります。構成ファイルはユーザーのプロファイルに保存されます。ファイルのあとがきを変更することはできません (アプリケーションによるユーザー設定のみ)。

ClickOnce プログラムを新しい接続文字列で更新するには、次のことをお勧めします。

  1. 「SettingsUpgradeNeeded」という新しいユーザー設定を作成trueし、設定デザイナーで設定します
  2. 次のコードをアプリケーションのスタートアップ コード (Program.cs または App.cs) に追加します。

    if (Properties.Settings.Default.SettingsUpgradeNeeded)
    {
        Properties.Settings.Default.Upgrade();
        Properties.Settings.Default.SettingsUpgradeNeeded = false;
        Properties.Settings.Default.Save();
    }
    
  3. 新しいアップデートを公開します。

SqlConnection接続を変更する別の方法は次のとおりです (これは、コードでのみ使用することを考えると、さらに好ましい方法です)。

  1. ConnectionStringsセクションの使用をやめる
  2. すべての接続パラメータについて、設定を作成します (例: データベース サーバー、データベース名など)。
  3. を使用しSqlConnectionStringBuilderて、これらの設定から接続文字列を生成します

EDIT
ユーザーが接続パラメーターを変更できるようにします。

  1. データベースに接続するために必要な各パラメーターのユーザー設定を作成します (例: サーバー、データベース、フェールオーバー パートナー、ユーザー名、認証方法など)。
  2. これらの値を設定できるダイアログを作成します
  3. を使用しSqlConnectionStringBuilderて、これらの値から接続文字列を作成します
  4. すべてのデータベース接続にその接続文字列を使用します

例:

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

于 2012-05-16T09:06:55.717 に答える
-1

データベースへの接続文字列を意味しますか? その場合は、データベース接続クラスで変更する必要があります。データベースもローカルに保存されている場合、ローカル デバイスの connectionString は通常のパスと同じになります。このような:

"C:\\Some_location\\database.extension"

拡張子は、使用しているデータベースの種類によって異なります。この文字列をデータベースの場所に変更してください。

于 2012-05-15T14:08:05.720 に答える