このページではVisual Basicで「DataAdapter」を使用してDBアクセスする方法を解説しています。
- データベース MariaDB
- Visual Studio 2022
Visual BasicでのDBアクセスは、主に「DataReader」と「DataAdapter」が使われます。
「DataAdapter」はデータベースからまとめて取り込むときに使います。
コーディングサンプル
Dimステートメント使用例
Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
Imports Mysqlx.XDevAPI.Relational
Imports Org.BouncyCastle.Crypto.Modes.Gcm
Module Program
Sub Main(args As String())
Dim sql As String
'--- データベース接続 ---
sql = "Server=localhost" _
& ";Port=3306" _
& ";Database=テストdb" _
& ";UserID=root" _
& ";Password=''"
Dim cn As New MySql.Data.MySqlClient.MySqlConnection(sql)
cn.Open()
'--- データの読み込み ---
sql = "select * from 売上tbl"
Dim da As New MySqlDataAdapter(sql, cn)
Dim ds As New DataSet
da.Fill(ds, "tbl")
'--- データの取り出し ---
With ds.Tables("tbl")
For I = 0 To .Rows.Count - 1
Console.WriteLine(.Rows.Item(I).Item("品目CD") _
& " " & .Rows.Item(I).Item("品目名"))
Next I
End With
'--- クローズ ---
da.Dispose()
cn.Close()
End Sub
End Module
Usingステートメント使用例
Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
Imports Mysqlx.XDevAPI.Relational
Imports Org.BouncyCastle.Crypto.Modes.Gcm
Module Program
Sub Main(args As String())
Dim sql As String
'--- データベース接続 ---
sql = "Server=localhost" _
& ";Port=3306" _
& ";Database=テストdb" _
& ";UserID=root" _
& ";Password=''"
Using cn As New MySql.Data.MySqlClient.MySqlConnection(sql)
cn.Open()
'--- データの読み込み ---
sql = "select * from 売上tbl"
Using da As New MySqlDataAdapter(sql, cn)
Dim ds As New DataSet
da.Fill(ds, "tbl")
'--- データの取り出し ---
With ds.Tables("tbl")
For I = 0 To .Rows.Count - 1
Console.WriteLine(.Rows.Item(I).Item("品目CD") _
& " " & .Rows.Item(I).Item("品目名"))
Next I
End With
'--- クローズ ---
End Using
End Using
End Sub
End Module
解説
ライブラリインポート
DBアクセスに必要なライブラリをインポートします。サンプルで使用しているデータベースはMariaDBなので「MySql.Data.MySqlClient」をインポートしています。
Imports MySql.Data.MySqlClient
データベース接続
DB接続の文字列の定義、MySqlConnectionをインスタンス化、Openメソッドでデータベースに接続します。
'--- データベース接続 ---
sql = "Server=localhost" _
& ";Port=3306" _
& ";Database=テストdb" _
& ";UserID=root" _
& ";Password=''"
Dim cn As New MySql.Data.MySqlClient.MySqlConnection(sql)
cn.Open()
データの読み込み
MySqlDataAdapterをインスタンス化、FILLメソッドにてDataSetオブジェクト(ds)にデータを一括で取り込みます。
'--- データの読み込み ---
sql = "select * from 売上tbl"
Dim da As New MySqlDataAdapter(sql, cn)
Dim ds As New DataSet
da.Fill(ds, "tbl")
データの取り出し
FOR文でループさせながら1件ずつデータを取り出しすことができます。
'--- データの取り出し ---
With ds.Tables("tbl")
For I = 0 To .Rows.Count - 1
Console.WriteLine(.Rows.Item(I).Item("品目CD") _
& " " & .Rows.Item(I).Item("品目名"))
Next I
End With