CDatabaseについて – プログラミング – Home

通知
すべてクリア

[解決済] CDatabaseについて


DK
 DK
(@DK)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

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ですが、途中を理解できないと先に進めない性格なので、
知っている人がいたら、ぜひ教えていただきたいです。


引用未解決
トピックタグ
Euglena
 Euglena
(@Euglena)
ゲスト
結合: 22年前
投稿: 6
 

私もそれほど理解できていませんが・・・(^^;

通常のデータベースアクセスをするだけならば、
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; ← こうするとウィンドウが表示される(はず・・)


返信引用
DK
 DK
(@DK)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

なんとなく分かったような気がします。
* pDatabase にはデータベースのアドレスが格納されるため、指定していない時はNULLが入
り、
CRecordsetではNULLを入れておいて、あとでデータソースを指定させているわけですね。

それと、SQLを使うことはできたのですが、新しい問題が発生してしまったので、新スレに書き
込むことにします。

返答ありがとうございました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました