设为首页 加入收藏

TOP

用VC++开发数据库应用程序(五)(二)
2012-11-04 15:17:07 来源: 作者: 【 】 浏览:374
Tags:开发 数据库 应用程序
  4.2 应用DAO编程(www.cppentry.com)

  4.21 打开数据库

  CDaoWorkspace对象代表一个DAO Workspace对象,在MFC DAO体系结构中处于最高处,定义了一个用户的同数据库的会话,并包含打开的数据库,负责完成数据库的事务处理。我们可以使用隐含的workspace对象。

  CDaoDatabase对象代表了一个到数据库的连接,在MFC中,是通过CDaoDatabase封装的。

  在构造CDaoDatabase对象时,有如下两种方法:

  创建一个CDaoDatabase对象,并向其传递一个指向一个已经找开的CdaoWorkspace对象的指针。

  创建一个CDaoDatabase对象,而不明确地指定使用的workspace,此时,MFC将创建一个新的临时的CDaoWorkspace对象。

  如下代码所示:

CDaoDatabase db;
db.Open(“test.mdb”,FALSE,FALSE,_T(“”);

  其中参数一包括要打开的文件的全路径名。

  4.22 查询记录

  一个DAO recordset对象,代表一个数据记录的集合,该集合是一个库表或者是一个查询的运行结果中的全部记录。CDaoRecorset对象有三种类型:表、动态集、快照。

  通常情况下,我们在应用程序中可以使用CDaoRecordset的导出类,这一般是通过ClassWizard或AppWizard来生成的。但我们也可以直接使用CDaoRecordset类生成的对象。此时,我们可以动态地绑定recordset对象的数据成员。

  如下代码所示:

COleVariant var;

long id;

CString str;

CDaoRecordset m_Set(&db);

m_Set.Open(“查询的SQL语句”);

while(!m_Set.IsEOF())

{

/*

处理

m_Set.GetFieldValue(“ID”,var);

id=V_I4(var);

m_Set.GetFieldValue(“Name”,var);

str=var.pbVal;

*/

m_Set.MoveNext();

}

m_Set.Close();

  4.23 添加记录

  添加记录用AddNew函数,此时用SetFieldValue来进行赋值。

  如下代码所示:

m_pDaoRecordset->AddNew ();
sprintf(strValue,"%s",>m_UserName );
m_pDaoRecordset->SetFieldValue ("UserName",strValue);
sprintf(strValue,"%d",m_PointId );
m_pDaoRecordset->SetFieldValue ("PointId",strValue);
dataSrc.SetDateTime (m_UpdateTime .GetYear ),m_UpdateTime .GetMonth ),m_UpdateTime .GetDay (),
m_UpdateTime .GetHour (),m_UpdateTime .GetMinute (),m_UpdateTime .GetSecond ());
valValue=dataSrc;
m_pDaoRecordset->SetFieldValue ("UpdateTime",valValue);
sprintf(strValue,"%f",m_pRecordset->m_OldValue );
m_pDaoRecordset->SetFieldValue ("OldValue",strValue);
sprintf(strValue,"%f",m_pRecordset->m_NewValue );
m_pDaoRecordset->SetFieldValue ("NewValue",strValue);
m_pDaoRecordset->Update ();

  此时,要注意,日期时间型数据要用SetDataTime函数来赋值,这里面要用到COleVariant类型数据,具体用法可以参考有关帮助。

  4.24 修改记录

  修改记录用Edit()函数,把记录定位到要修改的位置,调用Edit函数,修改完成后,调用Update函数。

  如下代码所示:

m_Set.Edit();
m_Set.SetFieldValue(“列名”,”字符串”);
m_Set.Update();

  4.25 删除记录

  删除记录用Delete()函数,使用后不需调用Update()函数。

  4.26 统计记录

  可以使用如下代码来统计记录数:

COleVariant varValue;
CDaoRecordset m_Set(&db);
m_Set.Open(dbOpenDynaset,”SQL语句”);
varValue=m_Set.GetFieldValue(0);
m_lMaxCount=V_I4(&varValue);
m_Set.Close();

  如果是统计一张表中总记录,可以使用CDaoTableDef对象,如下代码所示:

CDaoTableDef m_Set(&gUseDB);
Count=m_Set.GetRecordCount();
m_Set.Close();

  不能用CDaoRecordset对象的GetRecordCount()来取得记录数。

  4.3 总结

  使用DAO技术可以便我们方便的访问Microsoft Jet引擎数据库,由于Microsoft Jet不支持多线程,因此,必须限制调用到应用程序主线程的所有DAO。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用VC++开发数据库应用程序(六) 下一篇利用CAsyncSocket类实现Socket编程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: