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代码如下:
#include"stdafx.h"
#include"afxdb.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();
注意:如果没有设计好表则与该表绑定的数据集将无法定义完成,或者说一点表的字段结构发生变化,则相应的数据集必须紧跟着变化。