.NET 開発者必見: C# で SQL Server に接続してデータを読み書き

2024-06-19

C# で SQL Server への接続文字列を設定する方法

接続文字列の構成要素

接続文字列には、次の要素を含めることができます。

  • Data Source: データベースサーバーの名前。
  • Initial Catalog: 接続するデータベースの名前。
  • Integrated Security: Windows 認証を使用するかどうかを指定します。true に設定すると、現在の Windows ユーザーアカウントで認証されます。
  • User ID: SQL Server 認証を使用する場合のユーザー名。
  • Other: 接続タイムアウトや接続プールサイズなどの追加設定。

接続文字列を設定するには、次のいずれかの方法を使用できます。

  • 直接文字列として設定する:
string connectionString = "Data Source=myServer;Initial Catalog=myDatabase;Integrated Security=true";
  • SqlConnectionStringBuilder クラスを使用する:
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "myServer";
builder.InitialCatalog = "myDatabase";
builder.IntegratedSecurity = true;
string connectionString = builder.ConnectionString;
  • app.config または web.config ファイルを使用する:

接続文字列を app.config または web.config ファイルに格納し、次にコードからその文字列を読み込むことができます。

string connectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

次の例では、SqlConnection オブジェクトを使用して SQL Server に接続する方法を示します。

using System.Data.SqlClient;

string connectionString = "Data Source=myServer;Initial Catalog=myDatabase;Integrated Security=true";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // データベース操作を実行する
    connection.Close();
}

補足

  • 接続文字列を安全に保持するには、app.config または web.config ファイルに格納し、コードから ConfigurationManager クラスを使用して読み込むことをお勧めします。



C# で SQL Server に接続するサンプルコード

必要なライブラリ

このコードを実行するには、以下のライブラリをプロジェクトに追加する必要があります。

  • System.Data.SqlClient

コード

using System;
using System.Data.SqlClient;

namespace SqlServerExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 接続文字列を設定
            string connectionString = "Data Source=myServer;Initial Catalog=myDatabase;Integrated Security=true";

            // SqlConnection オブジェクトを作成
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 接続を開く
                connection.Open();

                // SQL コマンドを作成
                string sql = "SELECT * FROM Customers";
                SqlCommand command = new SqlCommand(sql, connection);

                // コマンドを実行し、結果を取得
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        // 各行のデータを取得
                        int customerId = reader.GetInt32(0);
                        string companyName = reader.GetString(1);

                        // データをコンソールに出力
                        Console.WriteLine($"Customer ID: {customerId}, Company Name: {companyName}");
                    }
                }
            }
        }
    }
}

説明

  1. 最初に、using ステートメントを使用して、System.Data.SqlClient 名前空間をコードにインポートします。
  2. 次に、connectionString 変数に接続文字列を格納します。
  3. using ステートメントを使用して、SqlConnection オブジェクトを作成します。これにより、接続が自動的に閉じられます。
  4. connection.Open() メソッドを使用して、データベースへの接続を開きます。
  5. SqlCommand オブジェクトを作成し、実行する SQL コマンドを設定します。
  6. SqlCommand.ExecuteReader() メソッドを使用して、コマンドを実行し、結果の SqlDataReader オブジェクトを取得します。
  7. SqlDataReader.Read() メソッドを使用して、結果セットの各行をループ処理します。
  8. 各行のデータを取得し、コンソールに出力します。
  9. using ステートメントを使用して、SqlDataReaderSqlConnection オブジェクトを自動的に閉じます。
  • このコードは、基本的なデータベース操作の例です。より複雑な操作については、Microsoft のドキュメントを参照してください。
  • 実際のアプリケーションでは、接続文字列を安全な場所に格納する必要があります。



SQL Server に接続するその他の方法

ADO.NET Entity Framework は、.NET Framework 用のオブジェクト関係マッピング (ORM) フレームワークです。 Entity Framework を使用すると、データベースとのやり取りをより簡単かつ効率的に行うことができます。

NHibernate は、オープンソースの ORM フレームワークです。 Entity Framework と同様に、NHibernate を使用すると、データベースとのやり取りをより簡単かつ効率的に行うことができます。

LINQ to SQL は、.NET Framework の Language Integrated Query (LINQ) を使用して SQL Server データベースにアクセスするためのツールです。 LINQ to SQL を使用すると、SQL クエリを C# コードで記述することができます。

ドライバーマネージャー

JDBC などのドライバーマネージャーを使用して、SQL Server に接続することもできます。 ドライバーマネージャーは、データベースの種類に関係なく、データベースに接続するための汎用的な方法を提供します。

使用する方法は、ニーズと要件によって異なります。

  • シンプルなデータアクセス の場合は、サンプルコードで示したような ADO.NET の基本的なデータアクセス方法を使用するのが最良の方法です。
  • より複雑なデータアクセス または オブジェクト指向の開発 の場合は、Entity Framework または NHibernate などの ORM フレームワークを使用することを検討してください。
  • LINQ を使用してデータベースにアクセスしたい場合は、LINQ to SQL を使用することができます。
  • データベースの種類に依存しない汎用的な方法 で接続したい場合は、ドライバーマネージャーを使用することができます。

    c# sql-server connection-string


    LinuxでSQL Serverを使う!ODBC、SQLCMD、mssql-cli、.NET Framework徹底解説

    ODBCを使用するODBC (Open Database Connectivity) は、さまざまなデータベースに接続するための標準インターフェースです。 Linuxには、SQL Serverに接続するためのODBCドライバーが用意されています。...


    SQL Server で複数の行のテキストを 1 つのテキスト文字列に連結する方法

    SQL Server で複数の行のテキストを 1 つのテキスト文字列に連結するには、いくつかの方法があります。方法+ 演算子最も簡単な方法は、+ 演算子を使用することです。この例では、FirstName 列と LastName 列を連結して、FullName という新しい列を作成します。...


    最後のIDENTITY値を取得! @@IDENTITY、SCOPE_IDENTITY()、IDENT_CURRENT() の使い分け

    @@IDENTITY@@IDENTITY は、現在のセッションで最後に挿入された IDENTITY 値を取得します。これは、どのスコープで挿入された値でも取得できます。例:SCOPE_IDENTITY()IDENT_CURRENT()IDENTITY() は、SELECT INTO ステートメントで使用され、新しい行に挿入される IDENTITY 値を指定します。...


    SSMS、PowerShell、サードパーティ製ツール:SQL Server 権限管理の選択肢

    権限スクリプティングの利点:手動操作の削減: 繰り返し行う手動の権限割り当てタスクを自動化することで、時間を節約し、エラーを削減できます。一貫性と準拠性: すべての環境で一貫した権限レベルを維持し、監査要件を容易に満たすことができます。バージョン管理: スクリプトをバージョン管理システムに保存することで、変更を追跡し、必要に応じてロールバックすることができます。...


    【解決策】Entity Framework 6とSQLite 1.0.96.0で発生する「No Entity Framework provider found」エラー

    このエラーは、C# で Entity Framework 6 と SQLite 1.0.96. 0 を組み合わせた開発において、Entity Framework プロバイダーが見つからない場合に発生します。Entity Framework は、データベースとアプリケーション間の通信を容易にするためのオブジェクト関係マッピング (ORM) フレームワークです。SQLite は軽量で高性能なファイルベースのデータベースです。...