本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
環境
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には標準で組みこまれていないようです。別途ソースコンパイルなどをしないといけないようでめんどくさそう。
そこで簡単に実装できる方法を試してみました。