vs2008 连接access数据库小结
一、工具
编程软件microsoftvisual studio 2008
microsoft office access 2007
二、步骤
1. 用microsoftoffice access 2007建立数据库,设计好表或者先不设计表。
2. 另存为access 2003(直接存储为2007没有测试),此时后缀为.mdb。
3. 以建立的数据库名称demo.mdb,表名user,字段username,password为例详细说明。
4. 声明一个用来存储从数据库中选出来的数据的数据集(类),注意一个表对应一个数据集,数据集以crecordset为基类。例如我声明的类名称为userset代码如下:
#includestdafx.h
#includeafxdb.h
class cuserset : publiccrecordset
{
public:
cuserset(cdatabase*pdatabase = null);
~cuserset(void);
public:
cstring m_username;
cstring m_password;
virtualcstring getdefaultconnect(); //default connection string
virtual cstring getdefaultsql(); //default sql for record set
virtual void dofieldexchange(cfieldexchange* pfx); // rfx support
};
cuserset::cuserset(cdatabase*pdb)
:crecordset(pdb)
{
m_username = _t();
m_password =_t();
}
cstringcuserset::getdefaultconnect()
{
return_t(odbc;dsn=demo); //注意此处的demo为数据库的名字去掉后缀
}
cstringcuserset::getdefaultsql()
{
return _t([user]); //该数据集绑定的表的名称
}
voidcuserset::dofieldexchange(cfieldexchange* pfx)
{
//将变量与相应的数据库中表user中的字段绑定
pfx->setfieldtype(cfieldexchange::outputcolumn);
rfx_text(pfx, _t([username]), m_user);
//注意此时表中字段username的数据类型为text
//若字段的类型为bool,则为rfx_bool
rfx_text(pfx, _t([password]), m_passwd);
}
cuserset::~cuserset(void)
{
}
至此就完成了数据集(类)的定义。
5. 连接数据库,函数如下:
sqlconfigdatasource(null,odbc_add_dsn,
microsoft access driver (*.mdb),
dsn=demo\0
description=hotel\0
filetype=access\0
dbq=.\\demo.mdb\0 );
注意函数的参数,将该语句放到主文件下且执行一次,若返回true即表示数据库已经正确连接了。而第4步数据集的定义保证了对数据库的操作,便于数据的选取。
需包含头文件#include odbcinst.h
6. 一个从数据库demo中选取表user中所有数据的例子:
usersetrecordset ;
cstring strsql;
updatedata(true);
strsql=select * from user;
if(!recordset.open(afx_db_use_default_type,strsql))
{
messagebox(“连接数据库失败”);
return false;
}
recordset.close();
注意:如果没有设计好表则与该表绑定的数据集将无法定义完成,或者说一点表的字段结构发生变化,则相应的数据集必须紧跟着变化。
