📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「</source>」を「</syntaxhighlight>」に置換 |
|||
| 23行目: | 23行目: | ||
<br> | <br> | ||
== | == 接続文字列の設定 == | ||
===== ソースコード上に埋め込む方法 ===== | ===== ソースコード上に埋め込む方法 ===== | ||
プロパティ値を設定して、ソースコード上で接続先を変更する。<br> | |||
ただし、動的な切り替えができないため本番環境では使用すべきではない。<br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
using System.Data.SqlClient; | using System.Data.SqlClient; | ||
| 44行目: | 46行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
===== app. | ===== アプリケーション構成ファイル (app.config / web.config) から取得する方法 ===== | ||
app.config / web.configは、アプリケーション構成ファイルとも呼ばれている。<br> | |||
これは、Microsoft .NET標準の設定値の保存場所である。<br> | |||
<br> | |||
アプリケーション構成ファイルのメリット<br> | |||
* 接続情報をソースコードから分離できる。 | |||
* 環境ごとに設定が変更できる。 | |||
*: 例えば、環境別 (開発環境、テスト環境、本番環境) ごとに接続文字列を設定できる。 | |||
* パスワードの暗号化も可能である。 | |||
<br> | |||
app.config / web.configは通称であり、実際には<アプリケーション名>.exe.Configという名前の場合が多い。<br> | |||
一般的に、実行ファイルと同階層に生成されるが、設定によっては一部ユーザフォルダに配置されることもある。<br> | |||
<br> | |||
app.configには2種類のクラス (PropertiesおよびConfiguration) が用意されており、それぞれ役割とスコープを持つ。<br> | |||
<br> | |||
app.config / web.configの<code>connectionStrings</code>タグは、C#でデータベース接続文字列を管理するための重要な設定セクションである。<br> | |||
ただし、ユーザ名とパスワードを平文で記述する場合は、リリース時や運用でパスワード管理方法を考える必要がある。<br> | |||
<br> | <br> | ||
app. | app.config / web.configのadd[@name]で指定された名前は、接続文字列を取得する時のキーになる。<br> | ||
ソースコード上でこのキーを指定することで接続文字列を取得する。<br> | ソースコード上でこのキーを指定することで接続文字列を取得する。<br> | ||
<br> | |||
* name | |||
*: 接続文字列の識別子 | |||
* connectionString | |||
*: 実際の接続文字列 | |||
* providerName | |||
*: 使用するデータプロバイダ | |||
<br> | |||
<u>※注意</u><br> | |||
<u>パスワードは平文で保存せずに暗号化することを推奨する。</u><br> | |||
<br> | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<?xml version="1.0" encoding="utf-8" ?> | |||
<!-- app.configまたはweb.config --> | <!-- app.configまたはweb.config --> | ||
<configuration> | <configuration> | ||
<connectionStrings> | <connectionStrings> | ||
<add name=" | <!-- SQL Server (通常) - SQL Server認証 --> | ||
<!-- SQL Server認証の場合はUser IDとPasswordを指定 --> | |||
<add name="<任意の接続文字列>" | |||
connectionString="Data Source=<サーバ名 / IPアドレス>; | |||
Initial Catalog=<データベース名 ※ただし、SQL Server認証なら不要>; | |||
Persist Security Info=True; | |||
User ID=<DBユーザ名>; | |||
Password=<DBユーザのパスワード>" | |||
providerName="System.Data.SqlClient"/> | |||
<!-- SQL Server (通常) - Windows認証 --> | |||
<!-- Windows認証の場合はIntegrated Security=Trueを指定 --> | |||
<add name="<任意の接続文字列>" | |||
connectionString="Data Source=<サーバ名 / IPアドレス>; | |||
Initial Catalog=<データベース名>; | |||
Integrated Security=True" | |||
providerName="System.Data.SqlClient"/> | |||
<!-- SQL Server (LocalDB) --> | |||
<add name="<任意の接続文字列>" | |||
connectionString="Data Source=(LocalDB)\MSSQLLocalDB; | |||
Initial Catalog=<データベース名>; | |||
Integrated Security=True" | |||
providerName="System.Data.SqlClient"/> | |||
<!-- MySQL --> | |||
<!-- NuGetでMySql.Dataパッケージのインストール --> | |||
<!-- Uidでユーザ名、Pwdでパスワードを指定 --> | |||
<!-- ServerをData Sourceに変更してもよい --> | |||
<add name="MySQLConnection" | |||
connectionString="Server=<サーバ名 / IPアドレス>; | |||
Database=<データベース名>; | |||
Uid=<DBユーザ名>; | |||
Pwd=<DBユーザのパスワード>" | |||
providerName="MySql.Data.MySqlClient"/> | |||
<!-- SQLite 3 --> | |||
<!-- NuGetでSystem.Data.SQLiteパッケージのインストール --> | |||
<!-- ファイルベースのDBなので、Data SourceにDBファイルのパスを指定 --> | |||
<!-- |DataDirectory|はアプリケーションのデータディレクトリを示す特殊なプレースホルダ (省略可能) --> | |||
<!-- デスクトップアプリケーションの場合、既定では実行可能ファイルのディレクトリを指す --> | |||
<!-- Webアプリケーションの場合、App_Dataディレクトリを指す --> | |||
<add name="SQLiteConnection" | |||
connectionString="Data Source=|DataDirectory|<SQLiteファイルのパス>.db; | |||
Version=3;" | |||
providerName="System.Data.SQLite"/> | |||
<!-- Oracle --> | |||
<!-- NuGetでOracle.ManagedDataAccessパッケージのインストール --> | |||
<add name="OracleConnection" | |||
connectionString="Data Source=<TNS名>; | |||
User Id=<DBユーザ名>; | |||
Password=<DBユーザのパスワード>;" | |||
providerName="Oracle.ManagedDataAccess.Client"/> | |||
</connectionStrings> | </connectionStrings> | ||
</configuration> | </configuration> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
SQLiteを使用する場合、Data Sourceの|DataDirectory|は、変更することができる。<br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Data")); | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
// 接続文字列の取得と接続 | |||
using System.Configuration; | |||
public string GetConnectionString() | |||
{ | |||
return ConfigurationManager.ConnectionStrings["<addタグのname属性の値>"].ConnectionString; | |||
} | |||
// データベースへ接続 | |||
public string Connect() | |||
{ | |||
var connectionString = GetConnectionString(); | |||
using (var connection = new SqlConnection(connectionString)) | |||
{ | |||
connection.Open(); | |||
// ...略 | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<br><br> | <br><br> | ||