C#でSQLiteにアプリケーションの設定を保存する

使用環境 Visual Studio2010 / C#での説明となります。

SQLite.dllをダウンロードする

SQLiteをDBとして使用するには、まず、SQLite.dllをダウロードします。

SQLite ダウロードページ

ここでは、「Precompiled Binaries for 32-bit Windows (.NET Framework 4.0)」の「sqlite-netFx40-binary-Win32-2010-1.0.105.1.zip」をダウロードします。各PC環境によって変更してください。

「sqlite-netFx40-binary-Win32-2010-1.0.105.1.zip」フォルダ内より、「System.Data.SQLite.dll」を取り出し任意のフォルダに保存します。

 

Visual Studioでアプリケーションを開き、「参照設定」より「参照の追加」をクリックし、先ほど保存した「System.Data.SQLite.dll」を選択し、参照設定に追加します。

 

アプリケーションのbin>Debugフォルダ内に対象のプラットフォームのフォルダを作成します。「x64」または「x86」のいずれかでプラットフォームターゲットがAny CPUの場合は、両方のフォルダを作成します。

 

ZIPフォルダ内の「SQLite.Interop.dll」を取りだし、Debugフォルダ内に作成した「x64」または「x86」フォルダに保存します。

SQLite.Interop.dllをこの形で保存しておかないと、実行時「DLL ‘SQLite.Interop.dll’ を読み込めません:指定されたモジュールが見つかりません。」のエラーメッセージがでて実行できません。

 

データの読み書き

SQLiteClass.cs

using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Windows.Forms;


class SQLiteClass
{
    private SQLiteConnection con;
    
    //初期設定
    public void InitializeSQLite()
    {
        //C:\Users\username\AppData\Roaming\SampleApplication1 にユーザ設定ファイルを保存する
        string appfol = System.IO.Path.Combine(Environment.GetFolderPath(
                Environment.SpecialFolder.ApplicationData), Application.ProductName);

        //アプリケーションフォルダを作成
        if (System.IO.Directory.Exists(appfol) != true)
        {
            System.IO.Directory.CreateDirectory(appfol);
        }

        string dbfile = appfol + "\\" + "setting.sqlite3";

        con = new SQLiteConnection("Data Source=" + dbfile);

        //DBオープン
        con.Open();

        //テーブル作成
        SQLiteCommand cmd = con.CreateCommand();

        //テーブル作成
        cmd.CommandText = "Create Table If Not Exists Setting ("
            + "Fld1 Text,"
            + "Fld2 Text,"
            + "Fld3 Integer,"
            + "Fld4 Real)";
        cmd.ExecuteNonQuery();

        //DBクローズ
        con.Close();
    }
}

using System.Data.SQLite;をクラスの先頭に付け足しておきます。 アプリケーションのLoadイベントInitializeSQLiteメソッドを呼び出し、設定保存用フォルダ作成、DB作成、テーブル作成の初期設定を行います。 con.Open();というこの1文だけでDBファイルが存在していなければ、勝手に作成されます。存在していれば、DBをオープンします。 Create Table If Not Exists Settingのところで「If Not Exists テーブル名」というキーワードをつけることにより、もしテーブルが存在しなければテーブルを作成するということになります。

レコード保存

        //基本設定保存
        private static void InsertToBasicTable(DTConnection db,string fldName,string textValue)
        {
            SQLiteCommand cmd = DTConnection.dtCN.CreateCommand();

            //既存設定削除
            cmd.CommandText = "Delete from Setting where Name='" + fldName+"'";
            cmd.ExecuteNonQuery();

            cmd.CommandText = "Insert into Setting"
                + " (Name,TextValue) values ('" + fldName + "','" + textValue + "')";

            try
            {
                cmd.ExecuteNonQuery();
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }

コメント

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