.NET TIPS

SQL Server接続文字列を簡単に作成するには?[2.0以降、C#、VB]

デジタルアドバンテージ 一色 政彦
2010/08/19

 .NETアプリケーションからSQL Serverにアクセスするには、接続に関する情報を1つの文字列にまとめた「接続文字列」が必要になる。例えば、次の文字列は接続文字列の一例である。

Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Projects\Sample\TestDB.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True
SQL Server接続文字列の例
接続文字列の中で用いられているキーワードについては、「MSDN:SqlConnection.ConnectionString プロパティ」で紹介されているキーワードの一覧を参考にしてほしい。

 接続文字列には、さまざまなキーワードを使いこなす必要がある(使用できるキーワードの一覧については「MSDN:SqlConnection.ConnectionString プロパティ」を参照されたい)。そのため、何の手掛かりもなしに、ゼロから接続文字列を作成するのは大変だ。

 そのような場面で接続文字列の作成を支援してくれるSqlConnectionStringBuilderクラス(System.Data.SqlClient名前空間)が、(.NET Framework 2.0以降では)提供されている。SqlConnectionStringBuilderクラスでは、接続文字列の各キーワードがプロパティとして用意されている。例えば、データソースの「DataSource」キーワードに対しては、DataSourceプロパティが用意されている。

 次のコードは、実際にSqlConnectionStringBuilderクラスを用いて、上記の「SQL Server接続文字列の例」で示した文字列を作成するコンソール・アプリケーションのサンプルだ。

using System;
using System.Data.SqlClient;

class Program
{
  static void Main(string[] args)
  {
    SqlConnectionStringBuilder builder =
      new SqlConnectionStringBuilder();
    builder.DataSource         = @".\SQLEXPRESS";
    builder.AttachDBFilename   = @"C:\Projects\Sample\TestDB.mdf";
    builder.IntegratedSecurity = true;
    builder.UserInstance       = true;
    builder.MultipleActiveResultSets = true;

    Console.WriteLine(builder.ConnectionString);
    // 出力例:
    // Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Projects\Sample\TestDB.mdf;Integrated Security=True;MultipleActiveResultSets=True;User Instance=True

    Console.ReadLine();   // 実行を停止
  }
}
Imports System.Data.SqlClient

Module Module1

  Sub Main()
    Dim builder As New SqlConnectionStringBuilder()
    builder.DataSource         = ".\SQLEXPRESS"
    builder.AttachDBFilename   = "C:\Projects\Sample\TestDB.mdf"
    builder.IntegratedSecurity = True
    builder.UserInstance       = True
    builder.MultipleActiveResultSets = True

    Console.WriteLine(builder.ConnectionString)
    ' 出力例:
    ' Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Projects\Sample\TestDB.mdf;Integrated Security=True;MultipleActiveResultSets=True;User Instance=True

    Console.ReadLine()   ' 実行を停止
  End Sub

End Module
SqlConnectionStringBuilderクラスを用いたSQL Server接続文字列の作成例(上:C#、下:VB)

 最終的な接続文字列は、SqlConnectionStringBuilderオブジェクトのConnectionStringプロパティにより得られる。

 上記のコードを入力する際には、(次の画面に示すように)接続文字列の各キーワードはIntelliSenseで表示され、その説明も表示されるので、簡単に接続文字列を作成できる。

IntelliSenseで表示される接続文字列の各キーワードに関する説明

 なお、上記のコードで示したSqlConnectionStringBuilderオブジェクトのプロパティを設定する方法だけではなく、下記のコードに示すように、SqlConnectionStringBuilderオブジェクトのインデクサ(C#)/既定のItemプロパティ(VB)経由で接続文字列の各キーワードを指定することも可能だ。

builder["Data Source"] = "(local)";
builder("Data Source") = "(local)"
SqlConnectionStringBuilderクラスを用いたSQL Server接続文字列の作成例(上:C#、下:VB)

 また、逆に既存の接続文字列からSqlConnectionStringBuilderオブジェクトを作成することもできる。

 これには、単にSqlConnectionStringBuilderクラスのインスタンスを作成する際に、コンストラクタに引数として接続文字列を渡せばよい。あるいは、SqlConnectionStringBuilderオブジェクトのClearメソッドを呼び出して、いったん接続文字列に関する情報をクリアしたうえで、ConnectionStringプロパティに接続文字列を設定してもよい。End of Article

利用可能バージョン:.NET Framework 2.0以降
カテゴリ:データベース 処理対象:接続文字列
カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:SqlConnectionStringBuilderクラス(System.Data.SqlClient名前空間)

この記事と関連性の高い別の.NET TIPS
[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?
文字と文字列を変換するには?
文字列から特定の文字列を取り除くには?
[ASP.NET]ASP.NETアプリからパスワード付きAccessデータベースにアクセスするには?
[ASP.NET]Express Edition以外のSQL Serverでフォーム認証を利用するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間