既然使用CRecordSet的派生类的Open函数就可以连接数据源并可选择不同的打开方式。那么CDatabase也是用它的Open函数连接数据源,然后还是要用CRecordSet派生类的Open函数。
这样的话,CDatabase类有什么用呢??在连接打开数据源时,好像只要有CRecordSet类就够了。
这样的话,CDatabase类有什么用呢??在连接打开数据源时,好像只要有CRecordSet类就够了。
解决方案 »
- 中秋到了,建议CSND给每个用户发个月饼
- 怎么好多帖子我都打不开阿??
- 关于MFC类中VIEW类中的一个和ontime()函数有关的内部函数????
- windows下如何编程来共享一个文件夹
- 用SHChangeNotifyRegister()函数监视文件夹的问题
- 关于捕获硬件异常和软件异常的问题
- 来抢分阿:从CTabCtrl派生如何使Item竖着排列?很急!!!
- 提个数据库的问题,有好方法的给分,我有个中间有结束符的字符串要存到表中的一个列里,有什么方法
- help!!
- 寻人启事:florist2000(善良的石头),我想请求你的帮助!你在哪里啊?
- 难题!求教高手
- CRecordset的成员函数addnew()添加记录的机制是怎么样的,请指教
但你要用到多个表的情况呢?你要构成多个记录集,把CDatabase
的地址传递给CRecordSet构造器的
CRecordSet对数据库中的表操作
CDatabase对数据库操作,直接执行SQL语句,如下列代码:
CDatabase * pDatabase = new CDatabase; TRY
{
pDatabase->OpenEx(_T("DSN=ODBCName;UID=***; PWD=***;"), CDatabase::noOdbcDialog);
}
CATCH(CDBException, e)
{
delete pDatabase;
return;
}END_CATCH Sql.Format("delete from TableName where ...."); //Sql语句
pDatabase->ExecuteSQL(Sql); pDatabase->Close();
delete pDatabase;而同样的操作使用CRecordSet类就比较费时
CMyRecordSet * pMyRecordSet = new CMyRecordSet; TRY
{
pMyRecordSet->OpenEx();
}
CATCH(CDBException, e)
{
delete pMyRecordSet;
return;
}END_CATCH if (pMyRecordSet->GetRecordCount() <= 0)
{
pMyRecordSet->Close();
delete pMyRecordSet;
Return;
} pMyRecordSet->MoveFirst();
while(pMyRecordSet->IsEof() == 0)
{
pMyRecordSet->Delete();
pMyRecordSet->MoveFirst();
}
pMyRecordSet->Close();
delete pMyRecordSet;