本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
環境
System.Data.Sqliteにて、VisualStudio2017 C# .NET framework4.6.1でSQLiteを使ってみます。
WPFアプリの作成

NuGetでSystem.Data.SQLiteを取得

NuGetパッケージの管理をクリック

検索テキストボックスにSystem.Data.SQLiteと入力
一番上に出てきたSystem.Data.SQLiteをインストールする

依存関係のあるパッケージも併せてインストールされます

DBとテーブルの作成
using System.Data.SQLite;
を加える
Xaml上にテーブル作成ボタンを配置

イベントに追加
private void B_MakeDB_Click(object sender, RoutedEventArgs e)
{
// コネクションを開いてテーブル作成して閉じる
using (var con = new SQLiteConnection("Data Source=test.db"))
{
con.Open();
using (SQLiteCommand command = con.CreateCommand())
{
command.CommandText = "create table t_product(CD INTEGER PRIMARY KEY AUTOINCREMENT, productname TEXT, price INTEGER)";
command.ExecuteNonQuery();
}
con.Close();
}
}
実行すると、test.dbができている事を確認

DBへの接続
DB接続ボタンを設置

イベントに追加
private void B_Con_Click(object sender, RoutedEventArgs e)
{
using (SQLiteConnection con = new SQLiteConnection("Data Source=test.db"))
{
try
{
con.Open();
MessageBox.Show("接続に成功しました");
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
}
接続確認

データ書き込み
DB書き込み用のテキストボックス準備

using (SQLiteConnection con = new SQLiteConnection("Data Source=test.db"))
{
con.Open();
using (SQLiteTransaction trans = con.BeginTransaction())
{
SQLiteCommand cmd = con.CreateCommand();
// インサート
cmd.CommandText = "INSERT INTO t_product (productname, price) VALUES (@Product, @Price)";
// パラメータセット
cmd.Parameters.Add("Product", System.Data.DbType.String);
cmd.Parameters.Add("Price", System.Data.DbType.Int64);
// データ追加
cmd.Parameters["Product"].Value = t_Product.Text;
cmd.Parameters["Price"].Value = int.Parse(t_Price.Text);
cmd.ExecuteNonQuery();
// コミット
trans.Commit();
}
}
※めんどくさかったので、テキストボックスのinteger判断などはしてない
A5:SQL Mk-2を使って、テーブルが出来ているか、レコードができているか確認
ちゃんとできている


データ取得
dataGridを配置

<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Height="164" Margin="336,215,0,0" VerticalAlignment="Top" Width="348" ItemsSource="{Binding}" AutoGenerateColumns="True" />
xamlにItemSource={Binding} AutoGenerateColumns=”True” を追記
using (SQLiteConnection con = new SQLiteConnection("Data Source=test.db"))
{
// DataTableを生成します。
var dataTable = new DataTable();
// SQLの実行
var adapter = new SQLiteDataAdapter("SELECT * FROM t_product",con);
adapter.Fill(dataTable);
dataGrid.DataContext = dataTable;
}
データを取得できたことを確認

パスワード暗号使えない
さて、DBをパスワード暗号化しようと思ったら使えませんでした。どうも、System.Data.Sqliteには標準で組みこまれていないようです。別途ソースコンパイルなどをしないといけないようでめんどくさそう。
そこで簡単に実装できる方法を試してみました。

