LoginSignup
0
0

More than 1 year has passed since last update.

Gtk3アプリ RiderとMySqlとDapper

Last updated at Posted at 2021-11-30

前提条件

MySqlのインストール
MySql WorkBenchのインストール
DapeprをNuGetからインストール
DapperExtensionをNuGetからインストール

MySQL WorkBenchでDBを作成する

RiderにMySqlに接続するツールがあり、スキーマ、テーブル、カラムが作成できます。
DBの作成の仕方がわからなかったため、MySql WorkBenchからDbだけを作成します

WorkBenchでDbだけ作成します。
Screenshot from 2021-11-30 15-55-07.png

DBへ接続

DBを作成したらRiderから接続します。
DataBaseにスキーマ名を記入します。
Screenshot from 2021-11-30 16-01-43.png

Rider上のテーブルの作成

DBち(スキーマ)を作成するとテーブルを作成できるようになります。
Screenshot from 2021-11-30 17-38-30.png

Rider上でのDBの操作

カラムを追加したり、外部キーを追加したりできます。
Screenshot from 2021-11-30 16-03-08.png

NuGetからMySql.Dataをダウンロード

NugetからMySqlクライアントMySql.Dataをインストールします
Screenshot from 2021-11-30 16-13-05.png

スキーマからモデルを生成する

ここからソースをダウンロードし、Riderのフォルダの中に格納しすぐモデルファイルを作成できるようにします。
MySql用にカスタマイズしていきます。

右クリックから実行しモデルファイルを生成します。
Screenshot from 2021-11-30 19-08-15.png

テストソース

using System;
using System.Linq;
using MySql.Data.MySqlClient;
using Dapper;
using DapperExtensions;

namespace mySql
{
    class Program
    {
        public class test
        {
            public Int64 id { get; set; } = 0;
            public string code { get; set; } = null;
            public string name { get; set; } = null;
        }

        static void Main(string[] args)
        {

            MySqlConnectionStringBuilder b = new MySqlConnectionStringBuilder();
            b.Server = "localhost";
            b.Port = 3306;
            b.Database = "";
            b.UserID = "";
            b.Password = "";

            MySqlConnection con = new MySqlConnection(b.ConnectionString);
            //MySQL形式でSQLを書き出す
            DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.MySqlDialect();

            //Dapperの_の入ったカラム名を有効にする。
            Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

            con.Open();

            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 = "test2";
            test1.code = "java";
            con.Insert<test>(test1);

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

            foreach (test test_t in test_result2.Result)
            {
                con.Delete<test>(test_t);
            }

            var result5= con.QueryAsync<test>(sql);

            Console.WriteLine(" count " + result5.Result.Count());

            con.Close();

        }
    }
}

MySqlの設定

Adavancedのところで変数を設定できます

Screenshot from 2021-12-16 14-19-49.png

課題

DapperExtensionのInsertAsyncなどAsync系が実行できなかった。

Gtk3アプリ RiderとTypeScriptとGtk3アプリの連携 その1に続く

0
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
0
0