初めまして。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つのデータしか表示されません。
どうすればいいかご教授ねがえないでしょうか?
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
ゴメンなさい。リンク先がオラクルのになってました。
[OleDbCommand.ExecuteScalar メソッド]
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemDataOleDbOleDbCommandClassExecuteScalarTopic.asp
MSDNのオンライン版ですので、ローカルのヘルプと同じ内容のはずです。
特攻隊長まるるうさん、ありがとうございました。
教えていただいたページなどを参考に以下のように作成し、無事目的のものを作成することができました。
/////////////////////////////////////////////////////////////////////
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
/////////////////////////////////////////////////////////////////////
なにかおかしな点や直した方がいいところがあれば、またお教え願えますでしょうか?
また、他の事で質問することが今後あるかもしれませんが、そのときもまた、よろしくお願いします。
解決のチェックを付け忘れてしまいました。
申し訳ありません。
>なにかおかしな点や直した方がいいところがあれば、またお教え願えますでしょうか?
コーディングのレベルを上げるなら修正点は多々あります。
それこそ商品として売れるコードにまで改善するのか?って事です。
ボクはそれでご飯を食べてますので、タダでそこまでの情報を
提供しては自分の仕事を否定しているようなものですし、知的
所有権とか会社の不利益とかにも関係しかねないので無理。
自分で調べる気があるのなら、キーワードくらいは教えます。
まず基本、『コーディング規約』、『オブジェクト指向』
コードの改善点としては『With』、『StringBuilder』、
『エラー処理』、『DBNull.Value』
これらのキーワードで過去ログ検索するだけでも
かなりの情報量でしょう。改善点も見つかります。
サンプルはあくまでサンプルと認識することです。
そしてプログラマは専門職です。もし、入門レベルの
学習ができておらず、掲示板でちょっと聞いてプログラミング
できると思ってるなら、それは無免許の医者が手術
するのに等しいと思ってください。もちろん貴方が
ブラック○ャックなら誰も文句は言わないでしょうが。
…ああ、緋色の狸さんが悪いと言ってるのではない
ですよ?むしろ成長が期待できるから書いてます。
頑張りたいなら頑張ってください。
ツイート | ![]() |