MFC连接Access
来源:互联网 发布:python零基础书籍 编辑:程序博客网 时间:2024/05/16 04:46
1. 导入dll,使用命名空间。
a.在stdafx.h里加入如下语句:
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" rename("EOF","adoEOF"), rename("BOF","adoBOF")
b.在需要使用的文件里使用命名空间
using namespace ADODB;
c.在使用之前加上
CoInitialize(NULL);
使其初始化。否则提示空指针错误。
2. 连接。
a.新建一个_ConnectionPtr类型的变量
m_conn.CreateInstance(__uuidof(Connection));
b.connStr连接字符串书写:
//03使用
//conStr = _T("Provider=Microsoft.Jet.OLEDB.4.0;")
// _T("Data Source=e:\\MSC\\trunk\\MSPMS\\Database\\TreeGroup\\TreeGroup.accdb;")
// _T("Jet OLEDB:Database Password=");
//07
conStr = _T(
"Provider=Microsoft.ACE.OLEDB.12.0;"
)
_T(
"Data Source=e:\\MSC\\trunk\\MSPMS\\Database\\TreeGroup\\TreeGroup.accdb;"
)
_T(
"Jet OLEDB:Database Password="
);
c.调用Open函数,
m_conn->Open(connStr,"","",-1);
3. 查询并返回结果。
建立一个结果集变量
_RecordsetPtr Ptr = NULL;Ptr.CreateInstance(__uuidof(Recordset));
构造sql语句:
CString sql = _T("SELECT* FROM GroupManage");_bstr_t sqlToExecute = sql;//可直接转换!
执行sql语句:
Ptr = m_conn->Execute(sqlToExecute,NULL,adCmdText);
从结果集取数据:
_variant_t roader;roader = Ptr->GetCollect(_T("gName"));
4. 关闭连接
m_conn.Close();
5. 需要注意的几个地方:
1. 连接与查询都需要使用try...catch...结构。
2. 错误信息的可以用MessageBox打印出来,代码如下:
3. Group是数据库保留的关键字,用来当表名的话会导致IDispatch error #3092的错误。
一个完整的过程如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//连接
CString conStr;
//03使用
//conStr = _T("Provider=Microsoft.Jet.OLEDB.4.0;")
// _T("Data Source=e:\\MSC\\trunk\\MSPMS\\Database\\TreeGroup\\TreeGroup.accdb;")
// _T("Jet OLEDB:Database Password=");
//07
conStr = _T(
"Provider=Microsoft.ACE.OLEDB.12.0;"
)
_T(
"Data Source=e:\\MSC\\trunk\\MSPMS\\Database\\TreeGroup\\TreeGroup.accdb;"
)
_T(
"Jet OLEDB:Database Password="
);
try
{
m_conn.CreateInstance(__uuidof(Connection));
_bstr_t conStr_=conStr;
m_conn->Open(conStr_,
""
,
""
,-1);
}
catch
(_com_error& e)
{
CString errormessage;
errormessage.Format(_T(
"连接StatusT.mdb数据库失败!\r\n错误信息:%s"
),e.ErrorMessage());
MessageBox(errormessage);
return
;
}
//查询
CString sql = _T(
"SELECT* FROM GroupManage"
);
_bstr_t sqlToExecute = sql;
//1.新建结果集,并将其值赋为空
_RecordsetPtr Ptr = NULL;
//2.try...catch...结构来进行读取数据
try
{
Ptr.CreateInstance(__uuidof(Recordset));
Ptr = m_conn->Execute(sqlToExecute,NULL,adCmdText);
_variant_t roader;
while
(!Ptr->adoEOF)
//读取gName字段,并依次弹出MsgBox显示
{
roader = Ptr->GetCollect(_T(
"gName"
));
if
(roader.vt != VT_NULL)
{
MessageBox((
LPCTSTR
)(_bstr_t)roader);
}
Ptr->MoveNext();
}
Ptr->Close();
}
catch
(_com_error& e)
{
CString errorMsg;
errorMsg.Format(_T(
"错误信息是:%s"
),e.ErrorMessage());
MessageBox(errorMsg);
return
;
}
//关闭连接
m_conn->Close();
- MFC连接Access
- mfc连接access数据库
- mfc连接access
- MFC ACCESS连接数据库
- MFC 连接ACCESS 数据库
- MFC连接ACCESS数据库
- MFC连接Access数据库
- MFC连接Access
- MFC连接ACCESS数据库心得
- mfc用odbc连接access
- MFC 代码配置ACCESS的ODBC连接
- ACCESS MFC ado 连接类 示例代码
- VC++ mfc 连接2010 Access 数据库
- MFC连接office 2010的access数据库
- mfc用ado的方式连接access
- MFC连接access制作登录界面
- MFC笔记 MFC与Access连接的实现
- Access Mfc
- hdu 1233 还是畅通工程
- 银行升级提示借鉴
- VC continue break
- 如何计算广播地址
- Box2D中的b2DebugDraw使用示例
- MFC连接Access
- 创建存储过程的顺序
- 安全测试工具收集
- 项目管理就是整合业务链
- Android设计模式系列
- (笔记)unix套接口的值-结果参数
- C++中反正切atan2(y,x)与atan(x)
- ubuntu 建立samba
- 4月15日-5月15日工作总结