今回はデータベースから取得したデータを表示したいと思います。
プログラムは前回のものを流用します。
【VB.NET】SQLiteのデータベース及びテーブルを動的に作成してみる
前回作成したテーブルにデータをツール、もしくはコマンドラインから追加します。
INSERT INTO MSTKIND VALUES ("01", "キジトラ");
INSERT INTO MSTKIND VALUES ("02", "長毛種(不明)");
INSERT INTO MSTKIND VALUES ("03", "ミケ(っぽい)");
INSERT INTO MSTKIND VALUES ("04", "サビ");
INSERT INTO MSTKIND VALUES ("09", "その他");
INSERT INTO TBLCAT VALUES('1','そら','♂','6','01','犬の人形');
INSERT INTO TBLCAT VALUES('2','りく','♂','5','02','人間');
INSERT INTO TBLCAT VALUES('3','うみ','♀','4','03','高級ウェットフード');
INSERT INTO TBLCAT VALUES('4','こうめ','♀','2','04','横取りフード');
追加したデータを確認します。
ソリューション・エクスプローラーからプロジェクトの「参照」を右クリックし、「参照の追加」を選択します。
「System.Data.Linq」で検索、チェックしてOKボタンをクリックします。
次の記述を先頭に追加します。
Imports System.Data.Linq
次の記述をフォームロード時のイベントメソッドに追加します。
' 種別コンボボックスの内容をデータベースから取得して設定
Using con As New DataContext(conn)
Dim kinds As Table(Of Kind) = con.GetTable(Of Kind)
Dim result As IQueryable(Of Kind) = From x In kinds Order By x.KindCd Select x
Dim empty As New Kind()
empty.KindCd = ""
empty.KindName = "指定なし"
Dim list = result.ToList()
list.Insert(0, empty)
' コンボボックスに設定
cmbKind.DataSource = list
cmbKind.DisplayMember = "kindName"
End Using
デザイナー画面にて配置した「検索」ボタンをダブルクリックします。
検索処理の実装
自動生成されたメソッドに次の処理を記述します。
''' <summary>
''' 検索ボタンクリックイベント.
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
Using conn As New SQLiteConnection("Data Source=SampleDb.sqlite")
' データベースオープン
conn.Open()
' 検索条件を指定してデータを取得
Using con As New DataContext(conn)
Dim searchName As String = txtName.Text
Dim searchKind As String = CType(cmbKind.SelectedValue, Kind).KindCd
Dim tblCat As Table(Of Cat) = con.GetTable(Of Cat)
Dim result As IQueryable(Of Cat)
If (searchKind = "") Then
' 種別が選択されていなければ名前のみ前方一致指定
result = From x In tblCat
Where x.Name.StartsWith(searchName)
Order By x.No
Select x
Else
' 種別が選択されていれば名前+種別で検索
result = From x In tblCat
Where x.Name.StartsWith(searchName) & x.KindCd = searchKind
Order By x.No
Select x
End If
' データグリッドビューに設定
dgvCat.DataSource = result.ToList()
End Using
' データベースクローズ
conn.Close()
End Using
End Sub
起動後の画面。
コンボボックスに無事にデータが設定されました。
検索ボタンをクリックして、データグリッドビューにも無事にデータが表示されました。
C#とほぼ同じなので難しくはないですね。
次回はデータの追加・更新・削除なんかもやってみます。
ではでは。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント