- PR -

クラスの変数について

1
投稿者投稿内容
さんちゃん
会議室デビュー日: 2004/10/08
投稿数: 8
投稿日時: 2004-10-08 13:21
さんと申します。(初心者)

VB.NETとADO.NETでDBの汎用アクセスクラスを作成しています。
各関数は、インターフェースで公開しています。

テスト用のコンソールアプリから
クラスのインスタンスをNEWで生成して、

クラスのDB接続関数(DB_CONNECT())で
m_Connection = New SqlConnection("接続文字列")

m_Connection.Open()

接続して、
m_Connection.state=1を接続を確認しています。

次に、参照関数のDB_SELECT()を呼び出して、m_Connection.stateを確認すると
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
エラーになってしまいます。

m_Connectionは、
クラスの先頭で

Dim m_Connection As SqlConnection
と宣言しています。

DB_CONNECT()で作成したm_Connectionを
DB_SELECT()で参照するには、どのように
したらよいか、
または、チェックポイントを
教えて頂けないでしょうか?

karajan
ベテラン
会議室デビュー日: 2002/07/05
投稿数: 89
投稿日時: 2004-10-08 13:42
m_Connection が属するクラスと、
DB_SELECT() メソッドが属するクラスは別々ということでしょうか?
さんちゃん
会議室デビュー日: 2004/10/08
投稿数: 8
投稿日時: 2004-10-08 13:45
m_ConnectionとDB_SELECT() メソッドは、同じクラス内に
宣言しています。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-10-08 13:51
Webアプリで
DB_CONNECT()

DB_SELECT()
が別リクエストってことはないですよね?
さんちゃん
会議室デビュー日: 2004/10/08
投稿数: 8
投稿日時: 2004-10-08 14:00
いろいろありがとうございます。

説明不足で申し訳ありませんが、
DB_CONNECT()を呼び出しているメインは、コンソールアプリです。
Webアプリと申されているのは、ASP.NETことかと
思いますが、使用しておりません。

あと、DB_select()内でADO,NETのcommanndオブジェクトを使用して、
ExecuteReader()を使用とすると、
”commanndオブジェクトのプロパティが初期化されいません”の
メッセージが表示され、
DB_select()の最初で
接続を確認するために、MessageBox.Show(m_Connection.State)を
実行すると"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
なります。

最初にお話しなくて申し訳ありません。


Micky
大ベテラン
会議室デビュー日: 2002/09/04
投稿数: 137
投稿日時: 2004-10-08 14:22
Mickyでございます。
みなさま、いつもお世話になっております。

えっと、クラスの内部より、
作成したクラスを使っている側(Callしている側)は
どうなっていますか?

DB_CONNECT()を呼び出す時と、
DB_SELECT()を呼び出す時とで、
同じインスタンスを使ってますでしょうか?

さんちゃん
会議室デビュー日: 2004/10/08
投稿数: 8
投稿日時: 2004-10-08 14:29
コールしている側は
Sub Main()
Dim test As New AAA
Dim I As IControl

I = test

I.DB_Connect()

I.DB_select("select * from bbb")
I.DB_Disconnect()

End Sub

で、同じインスタンスで呼び出しています。
さんちゃん
会議室デビュー日: 2004/10/08
投稿数: 8
投稿日時: 2004-10-08 19:11
みなさん、いろいろありがとうごます。

原因がわかりました。

クラスの先頭であるCOM+をInheritsで継承していて
それをはずすと、正常に動きました。

このCOM+は、他人が作って、ソースが
ないので何をやっているかは、わかりません。

が、このCOM+を継承すると、m_Connectiont等の変数が
nothingになってしまいます。

一応、ご報告まで!!

1

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