您的位置:首页 > 运维架构

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

2007-05-19 19:05 375 查看
我写了一个按钮的代码,本意是要生成一个.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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: