欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

vs2008 连接 access 数据库

程序员文章站 2024-02-15 14:36:23
...

VS2008 连接access数据库小结 一、工具 编程软件MicrosoftVisual Studio 2008 Microsoft office Access 2007 二、步骤 1.用Microsoftoffice Access 2007建立数据库,设计好表或者先不设计表。 2.另存为access 2003(直接存储为2007没有测试),此时后缀为.md

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();

注意:如果没有设计好表则与该表绑定的数据集将无法定义完成,或者说一点表的字段结构发生变化,则相应的数据集必须紧跟着变化。