连接数据库的具体步骤?
我在使用如下代码连接数据库是遇到了一些问题.
VC++下使用ADO编写数据库程序
准备:
(1)、引入ADO类
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
(2)、初始化COM
在MFC中可以用AfxOleInit();非MFC环境中用:
CoInitialize(NULL);
CoUnInitialize();
(3)#import 包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr
1.连接和关闭数据库 (1)连接
例子:连接Access数据库
AfxOleInit();//初始化
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout = 0;
hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb", "", "", adModeUnknown);
//m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->CommandTimeout = 5;
m_pCommand->ActiveConnection = m_pConnection;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
我用这一段代码连接数据库是怎么连接不上,现在有以下问题需要提问:
1 要是想使用这三个指针(_ConnectionPtr、_RecordsetPtr和_CommandPtr),是不是需要在哪个文件的头部包含上一个头文件?仅仅引入#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \是不是不够?
2 AfxOleInit()这个函数放在哪里?是应该放到CMainFrame0中吗?
3 在使用m_pConnection之前是不是该声明一下它?是这样声吗:_ConnectionPtr m_pConnection;
4 从哪里能看出这段程序是在连接access数据库,如果我要是想连接sql_server数据库呢,该怎么改?
5 ADODB是什么?
6_com_error可以直接使用吗?是不是该加上定义它的头文件?
能不能提供一个步骤更详细一些的完整的代码,最好说明那些代码该添在哪个文件里?急需使用!
问题点数:20、回复次数:3Top
1 楼csdnmi(悦纳)回复于 2005-05-14 09:44:56 得分 0
怎么也没人回答?急等?我周一就要给老师看了?Top
2 楼love_xf()回复于 2005-05-14 10:43:57 得分 10
加入这几个头文件
#include <adoid.h>
#include <adoint.h>
#include "icrsint.h"
_ConnectionPtr pConn = NULL;
try
{
pConn.CreateInstance(_unidof(Connection)); //创建Connection对象实例
_bstr_t conn="DSN=YouDsn;UID=XX,PWD=XXX";//通过ODBC的DSN默置之后就可以访问到你的数据源.
//当然也可以通过驱动等进行访问,查找一个ado访问数据库的连接字串有很多,这儿不列举了
//如果Access数据库,那就不用ado访问了,可以用DAO访问,或odbc数据源的方法访问,很简单.
pConn->Open(conn,"","",-1);
pConn->Close();
}
catch(_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
}
这样就可以打开数据库.
Top
3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-05-14 18:10:12 得分 10
1,引入就好了
2,在AppInstance中初始化
3,对
4,hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb", "", "", adModeUnknown);这里修改
5,你没有用
6,可以Top




