データベースに接続するには?

解決


ポリンキーの秘密  2006-06-28 01:33:09  No: 132065

VB.NETでプログラムを実行したときに、データグリッドへデータベースのデータを一覧と表示したいのですが、どうしてもデータベースへの接続の段階で出るエラーが解決できません。

Imports System.Data.OleDb

Public Class frmClList

 Inherits System.Windows.Forms.Form

Dim oCon As OleDbConnection
Dim oAda As OleDbDataAdapter
Dim oCom As OleDbCommand
Dim DS As New DataSet

#Region " Windows フォーム デザイナで生成されたコード "
  
Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

oCon = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb")
oCon.Open()

oAda = New OleDbDataAdapter("SELECT * FROM M ORDER BY X ", oCon)
oAda.Fill(DS)

上記のプログラムを実行しても、最後の行で
'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。
というエラーメッセージが出てしまいます。
解決方法が分かる方には是非教えていただきたいです。よろしくお願いいたします。


特攻隊長まるるう  2006-06-28 02:42:29  No: 132066

>oCon.Open()
が通っているので接続は問題なさそうです。
こちらの環境では何の問題なく実行できました。

SQL文で存在しないテーブル等を指定した時に
>'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。
のエラーメッセージが発生しました。
実行したSQL文が db1.mdb を開いて手作業でも実行できることを確認してください。


ポリンキーの秘密  2006-06-30 00:09:03  No: 132067

お早い回答ありがとうございます!

oAda = New OleDbDataAdapter("SELECT * FROM M ORDER BY X ", oCon)
をこのまま実行すると、正常に実行されました。
実際のプログラムでは、SELECTで抽出する行を指定していた(*ではなく、列の名前を入れていた)ので、エラーが出たようです。

そこでまた質問なのですが・・・
データベースに格納してあるデータ量がかなり多いので、最初の画面では、レコードの中からいくつかの項目だけを抜き出した一覧を表示していて、一覧の中から一つのレコードを選択したら、そのレコードの全データを表示する画面に遷移するようにしたいのですが、その場合はどのようにコーディングすればいいのでしょうか?
説明がわかりにくくて申し訳ないですが、回答いただければ嬉しいです。


特攻隊長まるるう  2006-06-30 21:14:02  No: 132068

内容は分かり易いけど、そんな質問になると『質問』ではなくて
アプリ開発の『依頼』になるので回答する気はありません。

過去ログ検索『データベース』等を参考に、自分の考えで
ある程度の設計まで作成終了して、Tips レベルの問題に
ぶつかったら質問掲示板を利用するようにしてください。
 # プログラムをやってるということは『プログラマ』なんですよね???
 # デバッグ作業までいってない質問は、まだ自分でやるべき
 # ことだと思ってください。


ポリンキーの秘密  2006-07-03 18:54:03  No: 132069

すいませんでした。
聞きたい内容としては、

>oAda = New OleDbDataAdapter("SELECT * FROM M ORDER BY X ", oCon)
をこのまま実行すると、正常に実行されました。
>実際のプログラムでは、SELECTで抽出する行を指定していた(*ではなく、列の名前を入れていた)ので、エラーが出たようです。

なぜここで*ではなく、抽出する行を指定するとエラーが出るのかと、どうすれば指定した行だけを抽出できるのか(他の行で指定するのか、書き方が別にあるのかなど)…だけだったのですが、長々動作説明までを書いたせいか聞きすぎになってしまってました。
当方プログラマではなく学生でして、課題で出されたのですがどうしてもできなくて…。これからはもっと自分で頑張ってみます!
ありがとうございました!


特攻隊長まるるう  2006-07-03 20:11:37  No: 132070

>なぜここで*ではなく、抽出する行を指定するとエラーが出るのかと、どうすれば指定した行だけを抽出できるのか
基本的にSQL文が正しければ実行できるはずです。
  ex) oAda = New OleDbDataAdapter("SELECT X FROM M ORDER BY X ", oCon)
 # X とか M という名前がサンプルとしても適当かどうかは疑問ですが、実行は出来ました。
>実行したSQL文が db1.mdb を開いて手作業でも実行できることを確認してください。
と既に書きましたが、プログラムがどうこうではなく、SQL文がデータベースに対して実行
できるかどうかを調べてください。

>当方プログラマではなく学生でして、
卵でも同じだと思います。技術的な部分ならともかく、どうするか?まで他人に頼るのでは
課題としての意味がありません。プログラムというのは自分で方法を考えるという作業です。
自分で考えないのならやらなくていいと思います。


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

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






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