VC++ 2019 使用DAO访问Access数据库简单示例

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类打开一个表;获取一些信息然后输出;

数据库如下;目前没记录;

VC++ 2019 使用DAO访问Access数据库简单示例_第1张图片

运行结果;

VC++ 2019 使用DAO访问Access数据库简单示例_第2张图片

可以输出记录数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++ 2019 使用DAO访问Access数据库简单示例_第3张图片

这个可能是VC麻烦的一些地方;相比C#这些;操作数据库时会用到Ole数据类型;

你可能感兴趣的:(VC++,VC2019,DAO,accdb,mdb,CDaoDatabase)