LoginSignup
1
0

More than 1 year has passed since last update.

Gtk3アプリ Sqliteを使う

Last updated at Posted at 2021-05-29

nugetからSqliteライブラリをインストール

スクリーンショット 2020-04-09 19.36.00.png

Sqliteでよく使われているライブラリはMicrosoft.Data.SqliteとSystem.Data.Sqliteがあります。
System.Data.SqliteはSqlite本家のライブラリでWindowsでよく利用されます。Linux版はNugetから入れてみるとNotFoundException SQLite.Interop.dllとエラーが出ます。Linuxで利用するにはSystem.Data.SQLiteのソースをダウンロードし、コンパイルしてからインポートしないといけないようです。

参考
F#からSQLiteをつかってみる

Microsoft.Data.Sqliteを使う

Microsoft.Data.Sqliteはnugetからそのまま使えるのでMicrosoftのものを使います。

Microsoft.Data.Sqlite.Core

Install-Package Microsoft.Data.Sqlite.Core -Version 5.0.6
//SQLitePCLRawも入れる必要あり
Install-Package SQLitePCLRaw.bundle_e_sqlite3 -Version 1.1.9

EntityFrameworkを利用したり暗号化したりする場合は以下のライブラリもインストールしないとエラーになります。
SQLitePCLRaw.bundle_e_sqlite3はMicrosoft.Data.Sqliteの利用に必須です。

Install-Package SQLitePCLRaw.bundle_e_sqlite3 -Version 1.1.9
Install-Package Microsoft.EntityFrameworkCore.Sqlite.Core -Version 5.0.6
Install-Package SQLitePCLRaw.bundle_sqlcipher -Version 1.1.9
Install-Package SQLitePCL.bundle_green -Version 0.9.3

参考

Dapperをインストール

Nugetで検索してインストールする
スクリーンショット 2020-04-09 19.36.00.png

Install-Package Dapper

Dapper

Dapper Extensionをインストール

Dapper Extensionは種類が多いため、検索して人気のあるダウンロード数の多いものをインストールする
スクリーンショット 2020-04-09 19.36.00.png

Install-Package DapperExtensions

DapperExtensions

Dbテストサンプル

RiderのDBの支援機能でDbファイルとテーブルを作成した後で

using System;
using Dapper;
using DapperExtensions;
using Microsoft.Data.Sqlite;

namespace sqlConsoleApp1
{
    class Program
    {
        public class test {
            public int id { get; set; }
            public string code { get; set; }
            public string name { get; set; } 
        }
        
        static void Main(string[] args)
        {
            
            SqliteConnectionStringBuilder b = new SqliteConnectionStringBuilder();
            b.DataSource = "./test.db";
            
            SqliteConnection con = new SqliteConnection(b.ConnectionString);
           //SQL形式で書き出す
            DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();

            con.Open();
            //dapperで_を有効にする
            Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

            //外部キーの設定
            SqliteCommand command = con.CreateCommand();
            command.CommandText = "PRAGMA foreign_keys = ON;";
            command.ExecuteNonQuery();

            string sql = "select * from test;";
            
            var result = con.Query<test>(sql);
            
            foreach(var p in result) {
                Console.WriteLine("ID:" + p.id + " 名:" + p.name);
            }

            test test1 = new test();
            test1.name = "2";
            test1.code = "java";
            con.Insert<test>(test1);

            string sql3 = "select * from test Where name = '2';";
            var test_result2 = con.QueryAsync<test>(sql3);
            Console.WriteLine(test_result2.Result);   

            con.Close();         
        }
    }
}

DapperExtensions 1.7.0

1.7.0から非同期処理ができるようになりました。

  test test1 = new test();
  test1.name = "1";
  test1.code = "java"; 
           
  con.InsertAsync(test1);

Riderのデータベース支援機能を使う

データベースウィンドウの+ボタンからデータベース接続画面を開く
スクリーンショット 2020-04-09 19.36.00.png

様々なDBの接続に対応している。Sqliteを選択
スクリーンショット 2020-04-09 19.36.00.png
外部キーの設定ができる
スクリーンショット 2020-04-09 19.36.00.png
データの編集
スクリーンショット 2020-04-09 19.36.00.png

Dbからモデルファイルを自動生成する

Screenshot from 2021-08-11 14-10-41.png

Generate POCO.groovyをダウロードします。インターフェースを作る場合はGenerate IPOCO.groovyを

Generate POCO.groovyをコピー

データーベース ー 右クリック ー スクリプト拡張 ー スクリプトディレクトリに移動

aaaa.png Screenshot from 2021-08-11 14-28-47.png

schema ー 右クリック ー Files ー POCO.groovyをコピー

モデルファイルが生成させる
Screenshot from 2021-08-11 14-32-23.png

追記 DBのカラム名をそのまま使えるように修正

Generate POCO.groovy

Generate POCO.groovy
name : csharpName(col.getName()),
↓
name : col.getName(),

csharpNameをすべて取る。

typeMappingにパターンを追加しDBの型を抽出できるようにする
typeMapping = [
        (~/(?i)^bit|bool$/)                                    : "bool",

モデル生成Script

Gtk3アプリ RiderとOpenApiに続く

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0