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

- 作者: WINGSプロジェクト?江賢,山田祥寛
- 出版社/メーカー: 日経BP
- 発売日: 2017/11/09
- メディア: 単行本
- この商品を含むブログを見る
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. おわりに
前回
でデータを新規登録しましたので、今回はそのデータを検索してみました。
今のシゴトに飽きちゃった...そんなあなたの見方です!【IT派遣テクノウェイブ】

- 作者: 山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2017/12/15
- メディア: Kindle版
- この商品を含むブログを見る
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688