データーベース

 ここではデータベースから値を取得してListBoxコントールにアイテムを追加していくプログラムを作成します。最初にデータベースを準備します。ここではアクセスを使用します。Microsoft Office Access 2003を使用してください。最初に新規作成をクリックします。次に空のデータベースをクリックします。データベースの名前にdb1.mdbと入力しCドライブのルートに保存します。次にデザインビューでテーブルを作成するをクリックします。空のテーブルが作成されます。フィールド名の1列目にidxと入力し、データー型にオートナンバを選択します。フィールド名の2列目にNameと入力し、データー型にテキストを選択します。×ボタンをクリックすると新しいテーブル名が聞かれますので、FlNameと入力してください。次にデータを入力していきます。作成されたテーブルFlNameを開いてください。Nameフィールドの1列目に田中、2列目に佐藤、3列目に鈴木と入力します。×ボタンをクリックしてセーブしてください。これでデーターベースの準備ができました。

 次にプロジェクトを作成します。またButton1を作成してプロパティTextにデーターベースから読み込みを選択します。次にツールボックスからリストボックスを選択しフォームを貼り付けます。これでプロジェクトの準備ができました。

 リストボックスにアイテムを追加するには

ListBox1.Items.Add(追加したいアイテム)

とします。例えば

ListBox1.Items.Add("PASOL.NET")

と実行するとListBoxにPASOL.NETが追加されます。これでリストボックスにアイテムを追加する方法がわかりました。次にデーターベースから値を取得する方法です。これは呪文のようなものですが

Dim oConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb")

Dim oCmd As OleDbCommand

Dim oReader As OleDbDataReader

oConn.Open()

oCmd = oConn.CreateCommand()

oCmd.CommandText = <SQL文章>

oReader = oCmd.ExecuteReader()

と書くと、DBから値が読み込めます。SQL文章には実行したいSQL文を書き込んでください。これらのプログラムを実行するには

Imports System.Data.OleDb

を最初に実行しなくてはいけません。次にOleDbDataReaderオブジェクトを利用して値を取得します。レコードを次に進めるにはReadメソッドを使用します。つまり次のレコードに進めるには

oReader.Read()

と実行すればよいのです。次の行があるときにはTrueを返し、それ以外ではFalseを返します。またレコードの値の取得にはオブジェクト名称("<フィールド名称>")と実行します。つまり

While oReader.Read()

ListBox1.Items.Add(CStr(oReader("NAME")))

End While

という形になります。ここまでプログラムが書き出せるかと思います。プログラム全体は

Imports System

Imports System.Data

Imports System.Data.OleDb

Public Class Form1

Inherits System.Windows.Forms.Form

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim oConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb")

Dim oCmd As OleDbCommand

Dim oReader As OleDbDataReader

oConn.Open()

oCmd = oConn.CreateCommand()

oCmd.CommandText = "SELECT * FROM FlName"

oReader = oCmd.ExecuteReader()

While oReader.Read()

ListBox1.Items.Add(CStr(oReader("NAME")))

End While

oReader.Close()

oConn.Close()

End Sub

End Class

となっています。

戻る