VC++6.0で、WinNT4.0です。
CDatabaseというクラスは、クラスウィザードに表示されないのでしょうか?
HELPを見たところ、CObject内にCDatabaseがある(派生?)らしいのですが、CObjectクラスも
ありません。
CRecordsetクラスの派生を作成すると、おまけ的についているのですが、CDatabaseクラスと
CRecordsetクラスの派生と言うことですか?
class RE : public CRecordset
{
public:
RE(CDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(RE)
最終的にやりたいのは、ExecuteSQLですが、途中を理解できないと先に進めない性格なので、
知っている人がいたら、ぜひ教えていただきたいです。
私もそれほど理解できていませんが・・・(^^;
通常のデータベースアクセスをするだけならば、
CDatabaseクラスを派生させる必要はないと思います。
ExecuteSQL()を使用するだけならCRecordsetクラスはいらないので、
CDatabase db;
db.OpenEx();
db.ExecuteSQL();
db.Close();
の手順で実行できます。(細かい指定は省略)
例として提示されている
RE(CDatabase* pDatabase = NULL);
は、db.OpenEx()で指定したデータベース(あるいはACCESSのmdb等)で
処理を行うという前提条件をクラス構築時に与えているものです。
CDatabase db;
RE* rec;
db.OpenEx();
rec = new RE(&db); ← こんな感じ
rec->Open();
・・
ここでテーブルに対して読み書き処理をする。
・・
rec->Close();
delete rec;
db.Close();
指定がない場合(NULL)には、使用するODBCデータソースを特定するための
選択ウィンドウが(多分)表示されるはずです。
rec = new RE; ← こうするとウィンドウが表示される(はず・・)
なんとなく分かったような気がします。
* pDatabase にはデータベースのアドレスが格納されるため、指定していない時はNULLが入
り、
CRecordsetではNULLを入れておいて、あとでデータソースを指定させているわけですね。
それと、SQLを使うことはできたのですが、新しい問題が発生してしまったので、新スレに書き
込むことにします。
返答ありがとうございました!