データーベース
ここではデータベースから値を取得して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 OleDbDataReaderoConn.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
SystemImports
System.DataImports
System.Data.OleDbPublic
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 OleDbDataReaderoConn.Open()
oCmd = oConn.CreateCommand()
oCmd.CommandText = "SELECT * FROM FlName"
oReader = oCmd.ExecuteReader()
While oReader.Read()ListBox1.Items.Add(
CStr(oReader("NAME"))) End WhileoReader.Close()
oConn.Close()
End SubEnd
Classとなっています。