PR

【C#入門】データベースに接続しよう!SQLite編

【C#】

はじめに

SQLiteは、軽量でファイルベースのリレーショナルデータベース管理システムです。この記事では、C#を使用してSQLiteデータベースに接続し、データを操作する方法を初心者向けに詳しく解説します。SQLiteは小規模プロジェクトやデスクトップアプリケーション、スマホなどのデバイス内部での使用に特に適しており、そのシンプルさから多くの開発者に支持されています。

SQLiteとは?

SQLiteは、そのコンパクトなサイズと低リソース要求で知られており、外部のサーバー設定を必要とせずにローカルで完全に動作します。データベース全体が単一のファイルに格納されるため、配布やバージョン管理が非常に簡単です。

開始前の準備

SQLiteをC#プロジェクトで使うためには、まずSQLiteを支援するライブラリをプロジェクトに追加する必要があります。最も一般的なライブラリはSystem.Data.SQLiteで、.NETアプリケーションでのSQLiteの使用を可能にします。

System.Data.SQLiteのインストール

  1. Visual Studioを開く: 既存のプロジェクトを開くか、新しいプロジェクトを作成します。
  2. NuGetパッケージマネージャーを使用: プロジェクトに右クリックし、「NuGetパッケージの管理」を選択します。
  3. パッケージを検索してインストール: 「参照」タブで「System.Data.SQLite」を検索し、プロジェクトにインストールします。

SQLiteデータベースへの接続

SQLiteデータベースへの接続は非常に簡単です。接続文字列を使用してSQLiteConnectionオブジェクトを作成し、データベースファイルに接続します。

接続文字列の作成

接続文字列はデータベースファイルのパスを指定するだけです。例えば、プロジェクトのルートにあるデータベースファイルに接続する場合、接続文字列は次のようになります:

string connectionString = "Data Source=mydatabase.db;Version=3;";

この文字列は、mydatabase.dbという名前のデータベースファイルへのパスと、使用するSQLiteのバージョンを指定します。

データベース接続のコード例

using System;
using System.Data.SQLite;

class Program {
    static void Main() {
        string connectionString = "Data Source=mydatabase.db;Version=3;";
        using (var conn = new SQLiteConnection(connectionString)) {
            conn.Open();
            Console.WriteLine("データベース接続成功!");
        }
    }
}

このC#コードスニペットは、SQLiteデータベースに接続する基本的な方法を示しています。以下では、コードの各部分について詳しく説明します。

コードの構成

  1. 名前空間のインポート:
   using System;
   using System.Data.SQLite;
  • System:基本的なシステム関連の機能を提供します。この場合は、Consoleクラスが含まれます。
  • System.Data.SQLite:SQLiteデータベースへのアクセスを可能にする.NETのデータプロバイダです。この名前空間には、SQLiteデータベースに接続するためのクラスとメソッドが含まれています。
  1. プログラムのエントリーポイント:
   class Program {
       static void Main() {
           // コード本体
       }
   }
  • Programクラスとその中のMainメソッドは、プログラムの開始点です。C#プログラムでは、Mainメソッドが最初に呼び出されます。
  1. データベース接続文字列の設定:
   string connectionString = "Data Source=mydatabase.db;Version=3;";
  • 接続文字列はデータベースファイルのパスを指定します。この例では、mydatabase.dbという名前のSQLiteデータベースファイルに接続するように設定されています。
  1. データベースへの接続と状態の確認:
   using (var conn = new SQLiteConnection(connectionString)) {
       conn.Open();
       Console.WriteLine("データベース接続成功!");
   }
  • SQLiteConnection クラスを使用して、SQLiteデータベースに接続します。ここでは、connectionStringで指定された接続文字列を使用して、データベースに接続しています。
  • using ステートメントは、SQLiteConnection のスコープを管理し、ブロックの終了時に接続を自動的に閉じる(Disposeを呼び出す)ことを保証します。
  • conn.Open() メソッドにより、実際にデータベースへの接続が開かれます。このメソッドが成功すると、”データベース接続成功!”というメッセージがコンソールに表示されます。

データの操作

SQLiteデータベースに接続した後、基本的なSQLクエリを使用してデータを操作することができます。

データの読み取り

using (var cmd = new SQLiteCommand("SELECT * FROM tablename", conn)) {
    using (var reader = cmd.ExecuteReader()) {
        while (reader.Read()) {
            Console.WriteLine(reader["columnname"].ToString());
        }
    }
}

このC#コードスニペットは、SQLiteデータベースからデータを読み取るための方法を示しています。以下では、コードの各部分について詳しく説明します。

コードの構成

  1. SQLiteCommandの使用:
   using (var cmd = new SQLiteCommand("SELECT * FROM tablename", conn))
  • SQLiteCommandオブジェクトは、SQLiteデータベースでSQLクエリを実行するために使用されます。この例では、"SELECT * FROM tablename"というSQLクエリを実行するためのcmdオブジェクトを作成しています。
  • connは、既に開かれているSQLiteデータベースへの接続を表しています。この接続はSQLiteConnectionオブジェクトを通じて行われます。
  1. データの読み取り:
   using (var reader = cmd.ExecuteReader()) {
       while (reader.Read()) {
           Console.WriteLine(reader["columnname"].ToString());
       }
   }
  • ExecuteReader()メソッドは、SQLコマンド(ここではSELECT文)の実行結果を取得するために使用されます。このメソッドは、クエリの結果を表すSQLiteDataReaderオブジェクトを返します。
  • SQLiteDataReaderは、データベースから取得したデータに順次アクセスするためのものです。Read()メソッドを呼び出すと、次の行に移動し、データが存在する場合はtrueを返します。
  • reader["columnname"]を使用して、特定の列の値にアクセスします。この場合、各行のcolumnname列の値がConsole.WriteLine()を使用してコンソールに出力されます。ToString()メソッドは、データベースから取得した値を文字列に変換します。

データの追加

using (var cmd = new SQLiteCommand("INSERT INTO tablename (column1, column2) VALUES (value1, value2)", conn)) {
    cmd.ExecuteNonQuery();
}

このC#コードスニペットは、SQLiteデータベースに新しいデータを挿入する方法を示しています。以下では、コードの各部分について詳しく説明します。

コードの構成

  1. SQLiteCommandの使用:
   using (var cmd = new SQLiteCommand("INSERT INTO tablename (column1, column2) VALUES (value1, value2)", conn))
  • SQLiteCommandオブジェクトは、SQLiteデータベースでSQLクエリを実行するために使用されます。この例では、"INSERT INTO tablename (column1, column2) VALUES (value1, value2)"というINSERT文を実行するためのcmdオブジェクトを作成しています。
  • connは、既に開かれているSQLiteデータベースへの接続を表しています。この接続はSQLiteConnectionオブジェクトを通じて行われます。
  1. データの挿入:
   cmd.ExecuteNonQuery();
  • ExecuteNonQuery()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行し、影響を受けた行数を返します。このメソッドは、クエリがデータを返さない場合に使用されます。
  • このコードでは、cmdオブジェクトに対してExecuteNonQuery()メソッドを呼び出しています。これにより、指定されたINSERT文が実行され、新しいデータがSQLiteデータベースのtablenameテーブルに挿入されます。

データの更新と削除

// データの更新
using (var cmd = new SQLiteCommand("UPDATE tablename SET column1 = 'newvalue' WHERE column2 = 'value2'", conn)) {
    cmd.ExecuteNonQuery();
}

// データの削除
using (var cmd = new SQLiteCommand("DELETE FROM tablename WHERE column1 = 'value1'", conn)) {
    cmd.ExecuteNonQuery();
}

まとめ

この記事では、C#からSQLiteデータベースに接続し、基本的なデータ操作を行う方法を紹介しました。SQLiteはそのシンプルさと軽量さから、多くの小規模アプリケーションや組み込みシステムでの使用に適しています。System.Data.SQLiteライブラリを使うことで、C#アプリケーションから簡単にSQLiteデータベースを操作できるようになります。

タイトルとURLをコピーしました