void Cdbdemo2019View::OnDraw(CDC* pDC)
{
Cdbdemo2019Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CDaoDatabase * db1=new CDaoDatabase(NULL);
//db1->Open(L"test1.accdb", 0, 0, L"");
//db1->Open(L"test1.accdb");
db1->Open(L"test2.mdb", 0, 0, L"");
CDaoRecordset * rs1 = new CDaoRecordset(db1);
rs1->Open(dbOpenDynaset, L"select * from cgqb");
CString str1 = rs1->GetDefaultDBName();
long cnt=rs1->GetRecordCount();
short fcnt = rs1->GetFieldCount();
CString strsql = rs1->GetDefaultSQL();
pDC->TextOutW(100, 100, str1);
CString str2,str3;
str2.Format(L"%d", cnt);
pDC->TextOutW(100,150,str2);
str3.Format(L"%d", fcnt);
pDC->TextOutW(100, 200, str3);
pDC->TextOutW(100, 250, strsql);
// TODO: 在此处为本机数据添加绘制代码
}
Win10, VC++2019;先新建一个MFC单文档工程;
按惯例先在stdafx.h添加DAO的头文件;但是找不到stdafx.h;可能VC2019已取消此文件;
先加到视类cpp文件的头部;#include"afxdao.h"
使用CDaoDatabase类打开数据库;数据库放在源码目录;
使用CDaoRecordset类打开一个表;获取一些信息然后输出;
数据库如下;目前没记录;
运行结果;
可以输出记录数0,字段数3;
GetDefaultDBName()和GetDefaultSQL()获取信息为空;MFC类库结构层次比较多;
如果出现错误:
C4995 “CDaoDatabase”: 名称被标记为 #pragma deprecated
在文件头部添加:
#pragma warning(disable:4995)
先打开一个.accdb数据库,不能打开;打开.mdb数据库成功;下回再操作表记录;
下面编程插入一条记录;
把下面代码加到前面代码后面;在打开记录集以后;
rs1->AddNew();
CString str101,str102;
str101.Format(L"%s", L"ZL-001");
COleVariant tmpVal1 = COleVariant(str101);
str102.Format(L"%s", L"重力传感");
COleVariant tmpVal2 = COleVariant(str102);
rs1->SetFieldValue(L"cgqxh", tmpVal1);
rs1->SetFieldValue(L"cgqgn", tmpVal2);
rs1->Update();
结果;
这个可能是VC麻烦的一些地方;相比C#这些;操作数据库时会用到Ole数据类型;