MDBのデータを全て、.netのリストボックスに表示するには?

解決


緋色の狸  2006-02-15 00:35:25  No: 130208

初めまして。VB.NETを最近使い始めたものです。。
今、Accessで作成したMDBからデータをselectでリストボックスに表示させようとしていますが、なかなかできません。
色々調べながら、現在以下のようになっています。
/////////////////////////////////////////////////////////////////////
 Public Sub CreateMyOleDbDataReader(ByVal mySelectQuery As String, ByVal myConnection As System.Data.OleDb.OleDbConnection)
        Dim myCommand As New System.Data.OleDb.OleDbCommand(mySelectQuery, myConnection)
        myConnection.Open()
        Dim myReader As System.Data.OleDb.OleDbDataReader
        myReader = myCommand.ExecuteReader()
        Try
            While myReader.Read()
                Console.WriteLine(myReader.GetString(0))
            End While
        Finally
            myReader.Close()
            myConnection.Close()
        End Try
    End Sub 'CreateMySqlCommand
---------------------------------------------------------------------------------------------------------------
    Public Sub ReadMyData(ByVal myConnString As String)
        Dim mySelectQuery As String = "SELECT address, day FROM MBLtb"
        Dim myConnection As New System.Data.OleDb.OleDbConnection(myConnString)
        Dim myCommand As New System.Data.OleDb.OleDbCommand(mySelectQuery, myConnection)
        myConnection.Open()
        Dim myReader As System.Data.OleDb.OleDbDataReader
        myReader = myCommand.ExecuteReader()
        ' Always call Read before accessing data.
        While myReader.Read()
            Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1)))
        End While
        ' always call Close when done reading.
        myReader.Close()
        ' Close the connection when done with it.
        myConnection.Close()
    End Sub 'ReadMyData
---------------------------------------------------------------------------------------------------------------
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim St As String
        Dim Cn As New System.Data.OleDb.OleDbConnection
        Dim OleDb As System.Data.OleDb.OleDbCommand
        Dim UserID As String = "Admin"
        Dim Password As String = ""
        Dim MDBFile As String = "C:\*******************.mdb"
        
        St = "Provider=""Microsoft.Jet.OLEDB.4.0"";"
        St &= "Data Source=""" & MDBFile & """;"
        St &= "User ID=" & UserID & ";"
        St &= "Jet OLEDB:Database Password=" & Password

        Cn.ConnectionString = St
        OleDb = Cn.CreateCommand
        OleDb.CommandText = "SELECT * FROM テーブル名"
        Cn.Open()

            ListBox1.Items.Add(OleDb.ExecuteScalar)

        Cn.Close()
        OleDb.Dispose()
        Cn.Dispose()
    End Sub
/////////////////////////////////////////////////////////////////////
今はまだ1つのデータしか表示されません。
どうすればいいかご教授ねがえないでしょうか?


特攻隊長まるるう  2006-02-15 01:16:08  No: 130209

ExecuteScalar メソッドはヘルプに解説があると思いますが
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfsystemdataoracleclientoraclecommandclassexecutescalartopic.asp
>結果セットの最初の行にある最初の列を返します。
単一のデータを取得するときに使います。

>今はまだ1つのデータしか表示されません。
>どうすればいいかご教授ねがえないでしょうか?
いくつか方法はありますが、例えば ExecuteReader を使った方法↓。
[VB で データベース - .NET DataReaderを使用してMDBに接続する]
http://homepage2.nifty.com/inform/vbdb/net_mdb.htm


特攻隊長まるるう  2006-02-15 01:20:15  No: 130210

ゴメンなさい。リンク先がオラクルのになってました。
[OleDbCommand.ExecuteScalar メソッド]
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemDataOleDbOleDbCommandClassExecuteScalarTopic.asp

MSDNのオンライン版ですので、ローカルのヘルプと同じ内容のはずです。


緋色の狸  2006-02-17 00:11:40  No: 130211

特攻隊長まるるうさん、ありがとうございました。
教えていただいたページなどを参考に以下のように作成し、無事目的のものを作成することができました。
/////////////////////////////////////////////////////////////////////
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim St As String
        Dim Cn As New System.Data.OleDb.OleDbConnection
        Dim SQL As System.Data.OleDb.OleDbCommand
        Dim UserID As String = "Admin"
        Dim Password As String = ""
        Dim MDBFile As String = "C:\********\MailList.mdb"
        Dim cmd As New OleDb.OleDbCommand
        Dim rs As OleDb.OleDbDataReader

        St = "Provider=""Microsoft.Jet.OLEDB.4.0"";"
        St &= "Data Source=""" & MDBFile & """;"
        St &= "User ID=" & UserID & ";"
        St &= "Jet OLEDB:Database Password=" & Password

        Cn.ConnectionString = St
        Cn.Open()
        
   cmd = Cn.CreateCommand()
        cmd.CommandText = "SELECT * FROM MLtb"
        rs = cmd.ExecuteReader()

        While rs.Read()
            ListBox1.Items.Add(rs.Item("address"))
            ListBox2.Items.Add(rs.Item("day"))
        End While

        Cn.Close()
        Cn.Dispose()
    End Sub
/////////////////////////////////////////////////////////////////////
なにかおかしな点や直した方がいいところがあれば、またお教え願えますでしょうか?

また、他の事で質問することが今後あるかもしれませんが、そのときもまた、よろしくお願いします。


緋色の狸  2006-02-17 00:12:48  No: 130212

解決のチェックを付け忘れてしまいました。
申し訳ありません。


特攻隊長まるるう  2006-02-17 02:49:55  No: 130213

>なにかおかしな点や直した方がいいところがあれば、またお教え願えますでしょうか?
コーディングのレベルを上げるなら修正点は多々あります。
それこそ商品として売れるコードにまで改善するのか?って事です。

ボクはそれでご飯を食べてますので、タダでそこまでの情報を
提供しては自分の仕事を否定しているようなものですし、知的
所有権とか会社の不利益とかにも関係しかねないので無理。

自分で調べる気があるのなら、キーワードくらいは教えます。
まず基本、『コーディング規約』、『オブジェクト指向』

コードの改善点としては『With』、『StringBuilder』、
『エラー処理』、『DBNull.Value』

これらのキーワードで過去ログ検索するだけでも
かなりの情報量でしょう。改善点も見つかります。

サンプルはあくまでサンプルと認識することです。
そしてプログラマは専門職です。もし、入門レベルの
学習ができておらず、掲示板でちょっと聞いてプログラミング
できると思ってるなら、それは無免許の医者が手術
するのに等しいと思ってください。もちろん貴方が
ブラック○ャックなら誰も文句は言わないでしょうが。

…ああ、緋色の狸さんが悪いと言ってるのではない
ですよ?むしろ成長が期待できるから書いてます。
頑張りたいなら頑張ってください。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加