- PR -

【ASP.NET】データベース接続について

1
投稿者投稿内容
Autumn
会議室デビュー日: 2002/12/02
投稿数: 4
投稿日時: 2002-12-02 16:48
初めましてAutumnと言います。
皆様に教えてもらいことがあります。

WEB上で条件を満たすデータをデータベース(Access)接続により
DataGridに表示させたいのですが
次のようなエラーが出てきて、上手くいきません。

'/smg/DBConn2' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------

オブジェクト参照がオブジェクト インスタンスに設定されていません。
説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。
エラーに関する詳細および例外の発生場所については、スタック トレースを
参照してください。

例外の詳細: '' は既に使用されているので、使用できませんでした。


ソース エラー:

行 38: DBCommand = New OleDbDataAdapter("Select * from Tb_Book", DBConn)
行 39:
行 40: DBCommand.Fill(DSPageData, "Book_ALL")
行 41:
行 42: 'Book_id > 2以上のBook_Nameを選択



ちなみに、
ソースは
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


'DBConn = New OleDbConnection("PROVIDER=Microsoft.jet.oledb.4.0;" _
' & "data Source=C:\db1.mdb;")

''全部選択
'DBCommand = New OleDbDataAdapter("Select * from Tb_Book", DBConn)

'DBCommand.Fill(DSPageData, "BookALL")

''Book_id > 2以上のBook_Nameを選択
'DBCommand = New OleDbDataAdapter("Select Book_Name from Tb_Book where id > 2", DBConn)

'DBCommand.Fill(DSPageData, "BookName")

''DragDropに値を設定する
'ddlBook.DataSource = DSPageData.Tables("BookALL").DefaultView

'ddlBook.DataBind()

''DataGrid1に値を設定する
'dg1.DataSource = DSPageData.Tables("BookALL").DefaultView
'dg1.DataBind()


''DataGrid2に値を設定する
'dg2.DataSource = DSPageData.Tables("BookName")
'dg2.DataBind()

End Sub

宜しくお願いします。
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 2002-12-02 18:33
以下の部分でDataAdapterとCommandオブジェクトの関係がおかしいです。
''全部選択
'DBCommand = New OleDbDataAdapter("Select * from Tb_Book", DBConn)

'DBCommand.Fill(DSPageData, "BookALL")

正しくは、
Dim DBCommand As New OleDbCommand("Select * from Tb_Book", DBConn)
Dim da As New OleDbDataAdapter(DBCommand)

da.Fill(DSPageData, "BookALL")

FillメソッドはDataAdapterのメソッドです。

mito
ベテラン
会議室デビュー日: 2002/05/17
投稿数: 50
投稿日時: 2002-12-04 10:32
宣言が省略されているようなのではっきりとはわかりませんが
DSPageDataはちゃんとNewで初期化されているのでしょうか?
DSPageData = New DataSet
または Dim DSPageData As DataSet = New DataSet
がされているか確認してみてください。
Autumn
会議室デビュー日: 2002/12/02
投稿数: 4
投稿日時: 2002-12-09 13:58
mitoさん、Souさん、回答ありがとうございました。
1つの原因として、DBファイルを開いていることが問題のようでした。
今までは、DB(Access)のテーブルを開いていると、エラーになるのは知っていたのですが、今回の場合のように、テーブルを開いていなくても、DBファイル自体を開いていると上記のエラーが発生するようです。
なので、DBファイルを閉じるとエラーがなくなり、DBファイルを開いていると、
「例外の詳細: '' は既に使用されているので、使用できませんでした。 」が発生します。
1

スキルアップ/キャリアアップ(JOB@IT)