mfc CDatabase 查access 数据库问题

mfc CDatabase 查access 数据库问题,第1张

CDatabase::Open;

virtual BOOL Open

(

LPCTSTR lpszDSN,

BOOL bExclusive = FALSE,

BOOL bReadOnly = FALSE,

LPCTSTR lpszConnect = “ODBC”,

BOOL bUseCursorLib = TRUE

)

throw( CDBException, CMemoryException )

参数含义:

lpszDSN指定了数据源名,在lpszConnect参数中也可包括数据源名,此时lpszDSN必需为NULL,若在函数中未提供数据源名且使lpszDSN为NULL,则会显示一个数据源对话框,用户可以在该对话框中选择一个数据源.

bExclusive说明是否独占数据源,由于目前版本的类库还不支持独占方式,故该参数的值应该是FALSE,这说明数据源是被共享的.

bReadOnly若为TRUE则对数据源的连接是只读的.

lpszConnect指定了一个连接字符串,连接字符串中可以包括数据源名、用户帐号(ID)和口令等信息,字符串中的"ODBC"表示要连接到一个ODBC数据源上.

bUseCursorLib若为TRUE,则会装载光标库,否则不装载,快照需要光标库,动态集不需要光标库.

参考代码:

#include "afxdb.h"

CDatabase database

CString sDriver = "MICROSOFT ACCESS DRIVER (*.mdb)"

CString sDsn

CString sFile = "c://works//ReadDB//Test.mdb"//Change path here

// Create ODBC connection dinamically

sDsn.Format("ODBCDRIVER={%s}DSN=''DBQ=%s",sDriver,sFile)

// Open the database

database.Open(NULL,false,false,sDsn)

数据库编程的思路都是一致的:打开数据库连接-》执行SQL语句-》获得查询结果-》关闭数据库连接,不同的数据库访问技术有不同的要求,比如用C API诘问MySql数据库的时候还得释放查询结果集。

ODBC访问数据库得配置数据源

配置ODBC数据源:打开控制面板下的“数据源”,d出“ODBC数据源管理器”,选择DSN选项卡-》添加->你选择你的SQL Server选项,单击完成。如图然后你再按照向导提示添加。

代码中用ODBC访问数据库你得加上afxdb.h头文件,

用CDataBase 类连接数据库、CRecordSet类查询记录。

现在在VC访问数据库常用的是ADO访问,你可以找一下我前面的回答有ADO访问数据库的步骤。

CDataBase m_cODBCDb

用CDataBase类的OpenEx()函数打开数据库连接。连接字符串你自己构造一下。

定义一个与上面数据库相关的查询对象

CRecordSet m_cODBCRec(&m_cODBCDb)

用这个查询对象的open方法就可以执行SQL语句与数据库交互了

现在用VC、MFC访问数据库常用的技术是ADO,学学这个吧。难点、但很实用!

导入ADO库

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")

2、用导入的动态库的指针 *** 作数据库.

打开数据库连接

_ConnectionPtr m_pConn// 数据库连接指针

// 创建Conneciton对象

m_pConn.CreateInstance(_T("ADODB.Connection"))

用ConnectionPtr 的open方法m_pConn->Open(_bstr_t(m_sConn),

_T(""), _T(""), lOptions))

m_sConn为你连接数据库的信息,你应该按照你的要求打开数据库

然后你用打开的那个连接进行 *** 作数据库。比如

_RecordsetPtr pRec = m_pConn->Execute(_bstr_t(pszSql), NULL, CmdText)

pszSql 就你要 *** 作数据库的SQL语句。在这个SQL语句里你可以创建表、更新表等。

用ADO访问的时候要求初始他COM库和释放COM对象

// 初始化COM环境(库)

::CoInitialize(NULL)

//释放COM对象

::CoUninitialize()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6687853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存