.NETの開発環境(C#)でSQLiteを使いデータベースをごにょごにょしたい!
.NET Coreでも.NET FRAMEWORKでも同じ手順で使えちゃいます。
概要
ファイルベースのデータベースであるSQLiteを.NET Coreや.NET FRAMEWORKの開発環境(C#)で使う。
仕様書
SQLiteを.NET
環境
- SQLite 3.35.5
- Visual Studio 2019
- .NET Core 3.1
- .NET Framework 4.8
手順書
必要なパッケージをインストールする
「出力」の「パッケージマネージャ」に下記のコマンドを入力してSQLiteを.Net Coreで使うために必要なパッケージをインストールする。または、「ソリューションエクスプローラー」の「NuGetパッケージの管理」からそれぞれパッケージをインストールしても良い。
Install-Package Microsoft.Data.Sqlite
Install-Package SQLitePCLRaw.bundle_e_sqlite3
データベースを作成する
データベースとテーブルを作成するサンプルを下記に示す。
using System;
using Microsoft.Data.Sqlite;
namespace sqlite_test
{
class Program
{
static void Main(string[] args)
{
using (var connection = new SqliteConnection("Data Source=database.db"))
{
connection.Open();
using (var command = connection.CreateCommand()) {
command.CommandText =
@"
CREATE TABLE IF NOT EXISTS USERS(
ID INTEGER NOT NULL PRIMARY KEY,
NAME TEXT NOT NULL,
AGE INTEGER NOT NULL
)
";
command.ExecuteNonQuery();
}
}
}
}
}
正常にプログラムが実行されると実行ファイルと同じ階層にdatabase.db
というファイルが作成される。このファイルがデータベースの本体である。
データベースの中に下記の表のようなUSERS
という名前のテーブルが作成される。
SQLiteで使える型については本記事の巻末資料に記載した。
名前 | 型 | 備考 |
---|---|---|
ID | INTGER | プライマリーキー(ユニーク) |
NAME | TEXT | |
AGE | INTGER |
行を挿入する
テーブルに行を挿入するサンプルを下記に示す。
using System;
using Microsoft.Data.Sqlite;
namespace sqlite_test
{
class Program
{
static void Main(string[] args)
{
using (var connection = new SqliteConnection("Data Source=database.db"))
{
connection.Open();
using (var command = connection.CreateCommand()) {
command.CommandText = "INSERT INTO USERS (ID, NAME, AGE) VALUES (1, 'テスト君', 20)";
command.ExecuteNonQuery();
}
using (var command = connection.CreateCommand()) {
command.CommandText = "INSERT INTO USERS (ID, NAME, AGE) VALUES (2, 'テストちゃん', 18)";
command.ExecuteNonQuery();
}
}
}
}
}
正常にプログラムが実行されるとテーブルに行が追加され、テーブルは下記の表の状態になる。
ID | NAME | AGE |
---|---|---|
1 | テスト君 | 20 |
2 | テストちゃん | 18 |
行を取得する
テーブルから行を取得するサンプルを下記に示す。
using System;
using Microsoft.Data.Sqlite;
namespace sqlite_test
{
class Program
{
static void Main(string[] args)
{
using (var connection = new SqliteConnection("Data Source=database.db"))
{
connection.Open();
using (var command = connection.CreateCommand()) {
command.CommandText = "SELECT ID, NAME, AGE FROM USERS";
command.ExecuteNonQuery();
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var id = (int)reader.GetValue(0);
var name = reader.GetString(1);
var age = (int)reader.GetValue(2);
Console.WriteLine($"id={id}, name={name}, age={age}");
}
}
}
}
}
}
}
正常にプログラムが実行されるとテーブルから行が取得され、コンソールに行の情報は出力される。
行を更新する
テーブルの行を更新するサンプルを下記に示す。
using System;
using Microsoft.Data.Sqlite;
namespace sqlite_test
{
class Program
{
static void Main(string[] args)
{
using (var connection = new SqliteConnection("Data Source=database.db"))
{
connection.Open();
using (var command = connection.CreateCommand()) {
command.CommandText = "UPDATE USERS SET AGE=21 WHERE ID=1";
command.ExecuteNonQuery();
}
}
}
}
}
正常にプログラムが実行されるとテーブルの行が更新され、テーブルは下記の表の状態になる。(テスト君が1歳を取る)
ID | NAME | AGE |
---|---|---|
1 | テスト君 | 21 |
2 | テストちゃん | 18 |
行を削除する
テーブルの行を削除するサンプルを下記に示す。
using System;
using Microsoft.Data.Sqlite;
namespace sqlite_test
{
class Program
{
static void Main(string[] args)
{
using (var connection = new SqliteConnection("Data Source=database.db"))
{
connection.Open();
using (var command = connection.CreateCommand()) {
command.CommandText = "DELETE USERS WHERE ID=1";
command.ExecuteNonQuery();
}
}
}
}
}
正常にプログラムが実行されるとテーブルの行が削除され、テーブルは下記の表の状態になる。(テスト君が除名される…)
ID | NAME | AGE |
---|---|---|
2 | テストちゃん | 18 |
巻末資料
SQLiteで使える型一覧表
型名 | 備考 |
---|---|
NULL | NULL値 |
INTEGER | 符号付整数 |
REAL | 浮動小数点数(FLOAT) |
TEXT | 文字列 |
BLOB | Binary Large OBject(バイナリ列) |
使用してるSQLiteのバージョンを取得する
下記のコードを実行するとコンソールに使用してるSQLiteのバージョンが表示される。
using (var connection = new SqliteConnection("Data Source=:memory:"))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText = "select sqlite_version()";
Console.WriteLine(command.ExecuteScalar());
}
まとめ(感想文)
データベースのサーバーを用意するまででもない場合(ローカルでちゃちゃっと済ませたい時など)に良いかもね!
引用・参考文献
下記の記事を参考にさせて頂きました。
ありがとうございました。