- - PR -
【ASP.NET】データベース接続について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 宜しくお願いします。 |
|
投稿日時: 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のメソッドです。 |
|
投稿日時: 2002-12-04 10:32
宣言が省略されているようなのではっきりとはわかりませんが
DSPageDataはちゃんとNewで初期化されているのでしょうか? DSPageData = New DataSet または Dim DSPageData As DataSet = New DataSet がされているか確認してみてください。 |
|
投稿日時: 2002-12-09 13:58
mitoさん、Souさん、回答ありがとうございました。
1つの原因として、DBファイルを開いていることが問題のようでした。 今までは、DB(Access)のテーブルを開いていると、エラーになるのは知っていたのですが、今回の場合のように、テーブルを開いていなくても、DBファイル自体を開いていると上記のエラーが発生するようです。 なので、DBファイルを閉じるとエラーがなくなり、DBファイルを開いていると、 「例外の詳細: '' は既に使用されているので、使用できませんでした。 」が発生します。 |
1