一个教训关于CDaoRecordSet::Open()

我写了一个按钮的代码,本意是要生成一个.mdb数据文件,遇到了错误,开始怀疑是参数问题,后来,偶然发现rs,即
cdaorecordset对象没有一个open操作,而直接做rs.addnew(),于是出错!

教训深刻.

记之,以提醒自己.

 

 // 使用CDaoDatabase
  //什么时候使用CDaoDatabase,用来产生mdb文件
 AfxGetModuleState()->m_dwVersion = 0x0601;
 pDatabase.Create("newdb.mdb",dbLangGeneral,0x40);

 // ---------------------------------------------------------
 CDaoTableDef pTable(&pDatabase);
 

 //一个基本问题的疑问?dao对象之间如何关联起来?在声明变量的时候或者之后?
 //定义CDaoTableDef类的方法警告,为什么不可以用下面的方法呢?
 // pTable.m_pDatabase = &pDatabase;

 // CDaoTableDef 类的create()得到的是什么?
 // 建立数据库中的一个新的表

  pTable.Create(_T("data"));

 // Create if just now , maybe can not open again.
 // pTable.Open("data");
 // 这里不需要open()


 pTable.CreateField("Y",dbInteger,10,0);
 // pTable.CreateField("N",dbInteger,10,0);
 pTable.Append();
 pTable.Close();
 

 //使用CDaoRecordSet
 CDaoRSet rs(&pDatabase);
//这里的open()一直处于缺少的状态,教训所在!!! 
rs.Open(dbOpenDynaset, _T("Select * from data"));
//--------------------------------------------------------------------
 rs.AddNew();

// ??????????????????????????????????????????????????????????????????????????????????
// ??????????????????????????????????????????????????????????????????????????????????
// ??????????????????????????????????????????????????????????????????????????????????
// 为什么不可以使用rs.addnew(),而要出错呢?需要什么前提条件呢?
// rs.open() 
// ??????????????????????????????????????????????????????????????????????????????????
// ??????????????????????????????????????????????????????????????????????????????????
// ??????????????????????????????????????????????????????????????????????????????????
   
rs.Update();
rs.AddNew();
rs.Update();
rs.Close();

pDatabase.Close();


pDatabase.m_pWorkspace->Close();

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值