プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

C#のSQLiteでデータを検索する。

この記事は2019年06月14日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. C#のSQLiteでデータを検索する
  3. おわりに

基礎からしっかり学ぶC#の教科書

基礎からしっかり学ぶC#の教科書

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているC#のSQLiteでデータを検索する方法についてです。

目次へ

2. C#のSQLiteでデータを検索する

C#のSQLiteでデータを検索する方法ですが、以下のような実装になります。

実装例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SQLite;

namespace CSharpSQLite
{
    class Program
    {
        private static readonly string DatabaseFileName = "sqlite.db";
        private static readonly string TableNameSample = "Sample";
        private static readonly string ColumnNamenId = "Id";
        private static readonly string ColumnNameName = "Name";
        private static readonly string ColumnNameAge = "Age";

        static void Main(string[] args)
        {
            var program = new Program();
            program.CreateTable();
            program.InsertTable();
            program.SelectTable();
        }

        // テーブルを作成します。
        private void CreateTable()
        {
            var connectionSb = new SQLiteConnectionStringBuilder { DataSource = $"{DatabaseFileName}" };
            using (var connection = new SQLiteConnection(connectionSb.ToString()))
            {
                connection.Open();
                using (var command = new SQLiteCommand(connection))
                {
                    command.CommandText = $"CREATE TABLE IF NOT EXISTS {TableNameSample}({ColumnNamenId} INTEGER PRIMARY KEY AUTOINCREMENT, {ColumnNameName} TEXT, {ColumnNameAge} INTEGER)";
                    command.ExecuteNonQuery();
                }
                connection.Close();
            }
        }

        // データを新規登録します。
        private void InsertTable()
        {
            var connectionSb = new SQLiteConnectionStringBuilder { DataSource = $"{DatabaseFileName}" };
            using (var connection = new SQLiteConnection(connectionSb.ToString()))
            {
                connection.Open();
                using (var transaction = connection.BeginTransaction())
                {
                    var command = connection.CreateCommand();
                    command.CommandText = $"INSERT INTO {TableNameSample} ({ColumnNameName}, {ColumnNameAge}) VALUES (@{ColumnNameName}, @{ColumnNameAge})";
                    command.Parameters.Add(ColumnNameName, System.Data.DbType.String);
                    command.Parameters.Add(ColumnNameAge, System.Data.DbType.Int64);

                    command.Parameters[ColumnNameName].Value = "佐藤";
                    command.Parameters[ColumnNameAge].Value = 21;
                    command.ExecuteNonQuery();

                    command.Parameters[ColumnNameName].Value = "鈴木";
                    command.Parameters[ColumnNameAge].Value = 32;
                    command.ExecuteNonQuery();

                    command.Parameters[ColumnNameName].Value = "高橋";
                    command.Parameters[ColumnNameAge].Value = 43;
                    command.ExecuteNonQuery();

                    transaction.Commit();
                }
                connection.Close();
            }
        }

        // データを検索します。
        private void SelectTable()
        {
            var connectionSb = new SQLiteConnectionStringBuilder { DataSource = $"{DatabaseFileName}" };
            using (var connection = new SQLiteConnection(connectionSb.ToString()))
            {
                connection.Open();
                var command = connection.CreateCommand();
                command.CommandText = $"SELECT * FROM {TableNameSample}";
                using (var reader = command.ExecuteReader())
                {
                    var message = "Id,Name,Age\n";
                    while (reader.Read())
                    {
                        message += $"{reader[ColumnNamenId].ToString()}, {reader[ColumnNameName].ToString()}, {reader[ColumnNameAge].ToString()}\n";
                    }
                    Console.WriteLine(message);

                }
                connection.Close();
            }
        }
    }
}

実行結果

Id,Name,Age
1, 佐藤, 21
2, 鈴木, 32
3, 高橋, 43
4, 佐藤, 21
5, 鈴木, 32
6, 高橋, 43
7, 佐藤, 21
8, 鈴木, 32
9, 高橋, 43

3. おわりに

前回

paveway.hatenablog.com

でデータを新規登録しましたので、今回はそのデータを検索してみました。

今のシゴトに飽きちゃった...そんなあなたの見方です!【IT派遣テクノウェイブ】

独習C# 新版

独習C# 新版

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ