怎么样用ADO方法连接SQL2000数据库? 知道的朋友提供下方法,或者详细的代码,或者提供资料也可以,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 上段代码void CAdoDlg::OnBtnQuery() { // TODO: Add your control notification handler code here CoInitialize(NULL); _ConnectionPtr pConn(__uuidof(Connection)); _RecordsetPtr pRst(__uuidof(Recordset)); _CommandPtr pCmd(__uuidof(Command)); pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs"; pConn->Open("","","",adConnectUnspecified); //pRst=pConn->Execute("select * from authors",NULL,adCmdText); //pRst->Open("select * from authors",_variant_t((IDispatch*)pConn), // adOpenDynamic,adLockOptimistic,adCmdText); pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn)); pCmd->CommandText="select * from authors"; pRst=pCmd->Execute(NULL,NULL,adCmdText); while(!pRst->rsEOF) { ((CListBox*)GetDlgItem(IDC_LIST1))->AddString( (_bstr_t)pRst->GetCollect("au_lname")); pRst->MoveNext(); } pRst->Close(); pConn->Close(); pCmd.Release(); pRst.Release(); pConn.Release(); CoUninitialize();} 基本步骤:1.创建一个基于对话框的应用程序ADODatabase。2.创建一个用来连接的ADO类库。系统菜单中Insert->New Class项,class type选择Generic Class; 在Name后输入类名“ADOConn”,点OK。这样,在工程上自动生成ADOConn.h和ADOConn.cpp两个文件。3.在ADOConn.h中导入一个ADO动态链接库msado15.dll,添加代码:#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF"),同时在ADOConn.h中定义 public://添加一个指向Connection对象的指针: _ConnectionPtr m_pConnection; //添加一个指向Recordset对象的指针: _RecordsetPtr m_pRecordset。4.m_pConnection->Open(_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options) 操作。ConnectionString为VC++中对SQL SERVER中ADO设置。如,Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=suntest;Data Source=WWW-ED1F301E78B ;User Id=sa;Password=;其中Data Source为服务器名称,可以用Server代替,本机表示为.或者(local);Initial Catalog为你要使用的数据库名称 可以用Database代替;Integrated Security=SSPI表示用集成模式,此时uid 和pwd 设置不起作用;只有当Integrated Security=FALSE表示用混合模式,uid 和pwd 设置才起作用参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名 adCmdProc-存储过程;adCmdUnknown-未知5.添加两个成员函数:(1)执行查询函数 _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);(2)执行SQL语句 BOOL ExecuteSQL(_bstr_t bstrSQL)。给出两个文件的完整代码:/*------------------ADOConn.h File-------------------------------------------------*/// ADOConn.h: interface for the ADOConn class.#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")#if !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)#define AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class ADOConn {// 定义变量public://添加一个指向Connection对象的指针:_ConnectionPtr m_pConnection;//添加一个指向Recordset对象的指针:_RecordsetPtr m_pRecordset;// 定义方法public:ADOConn();virtual ~ADOConn();// 初始化—连接数据库void OnInitADOConn();// 执行查询_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);// 执行SQL语句,Insert Update _variant_tBOOL ExecuteSQL(_bstr_t bstrSQL);void ExitConnect();};#endif // !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)/*--------------------------------------------------------------------------------*//*---------------------ADOConn.cpp File---------------------------*/#include "stdafx.h"#include "ADOConn.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endifADOConn::ADOConn(){}ADOConn::~ADOConn(){}// 初始化—连接数据库void ADOConn::OnInitADOConn(){// 初始化OLE/COM库环境::CoInitialize(NULL);try{// 创建Connection对象m_pConnection.CreateInstance("ADODB.Connection");// 设置连接字符串,必须是BSTR型或者_bstr_t类型_bstr_t strConnect = "Provider=SQLOLEDB; Server=CZ;Database=HrSys; uid=sa; pwd=sa;";m_pConnection->Open(strConnect,"","",adModeUnknown);}// 捕捉异常catch(_com_error e){// 显示错误信息AfxMessageBox(e.Description());}}// 执行查询_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL){try{// 连接数据库,如果Connection对象为空,则重新连接数据库if(m_pConnection==NULL) OnInitADOConn();// 创建记录集对象m_pRecordset.CreateInstance(__uuidof(Recordset));// 取得表中的记录m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);}// 捕捉异常catch(_com_error e){// 显示错误信息AfxMessageBox(e.Description());}// 返回记录集return m_pRecordset;}// 执行SQL语句,Insert Update _variant_tBOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL){// _variant_t RecordsAffected;try{// 是否已经连接数据库if(m_pConnection == NULL) OnInitADOConn();// Connection对象的Execute方法:(_bstr_t CommandText,// VARIANT * RecordsAffected, long Options )// 其中CommandText是命令字串,通常是SQL命令。// 参数RecordsAffected是操作完成后所影响的行数,// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名// adCmdProc-存储过程;adCmdUnknown-未知m_pConnection->Execute(bstrSQL,NULL,adCmdText);return true;}catch(_com_error e){AfxMessageBox(e.Description());return false;}}void ADOConn::ExitConnect(){// 关闭记录集和连接if (m_pRecordset != NULL)m_pRecordset->Close();m_pConnection->Close();// 释放环境::CoUninitialize();}原文连接:http://apps.hi.baidu.com/share/detail/18694643 _bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;UsreID=sa;Initial Catalog=pubs";编译的时候报错,说什么连接字符串属性无效,是何原因。 _bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=manage;Data Source=9A61C87AD7BB4B8";我改成这样的,也有报错,说什么数据库不存在我就是不知道Initial catalog怎么去设置,还有Data source 数据源怎么设置 然后我再改成这个: _bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Data;Data Source=BEANS";Data是数据库的名字,BEANS是SQL服务管理的名称,也报错。说用户Sa登陆失败,未与信任的SQL SERVER链接相关联 程序不支持双线程操作 急急急 无法调用GetAdaptersAddresses() 在对话框OnPaint中画背景,会把原来对话框上的控件遮住,该怎么办? mfc如何查询数据库数据 BitBlt()函数使用问题 play的前两个参数各是什么意思 求win32消息结构与宏一书 请问有没有人从事WIN CE的开发? 移动鼠标,窗口闪烁【已使用双缓冲机制】 help me help!! 为什么在CSplitterWnd分割的视图中无法绘制图片? 求助,在线程中创建SOCKET遇到的报错问题。
{
// TODO: Add your control notification handler code here
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command)); pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs";
pConn->Open("","","",adConnectUnspecified); //pRst=pConn->Execute("select * from authors",NULL,adCmdText);
//pRst->Open("select * from authors",_variant_t((IDispatch*)pConn),
// adOpenDynamic,adLockOptimistic,adCmdText);
pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
pCmd->CommandText="select * from authors";
pRst=pCmd->Execute(NULL,NULL,adCmdText);
while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
(_bstr_t)pRst->GetCollect("au_lname"));
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
}
1.创建一个基于对话框的应用程序ADODatabase。2.创建一个用来连接的ADO类库。系统菜单中Insert->New Class项,class type选择Generic Class; 在Name后输入类名“ADOConn”,点OK。这样,在工程上自动生成ADOConn.h和ADOConn.cpp两个文件。3.在ADOConn.h中导入一个ADO动态链接库msado15.dll,添加代码:#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF"),同时在ADOConn.h中定义 public://添加一个指向Connection对象的指针: _ConnectionPtr m_pConnection; //添加一个指向Recordset对象的指针: _RecordsetPtr m_pRecordset。4.m_pConnection->Open(_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options) 操作。ConnectionString为VC++中对SQL SERVER中ADO设置。如,Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=suntest;Data Source=WWW-ED1F301E78B ;User Id=sa;Password=;
其中Data Source为服务器名称,可以用Server代替,本机表示为.或者(local);Initial Catalog为你要使用的数据库名称 可以用Database代替;Integrated Security=SSPI表示用集成模式,此时uid 和pwd 设置不起作用;只有当Integrated Security=FALSE表示用混合模式,uid 和pwd 设置才起作用
参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名 adCmdProc-存储过程;adCmdUnknown-未知5.添加两个成员函数:(1)执行查询函数 _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);(2)执行SQL语句 BOOL ExecuteSQL(_bstr_t bstrSQL)。
给出两个文件的完整代码:/*------------------ADOConn.h File-------------------------------------------------*/// ADOConn.h: interface for the ADOConn class.#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")#if !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)
#define AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class ADOConn
{
// 定义变量
public:
//添加一个指向Connection对象的指针:
_ConnectionPtr m_pConnection;
//添加一个指向Recordset对象的指针:
_RecordsetPtr m_pRecordset;
// 定义方法
public:
ADOConn();
virtual ~ADOConn();
// 初始化—连接数据库
void OnInitADOConn();
// 执行查询
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
// 执行SQL语句,Insert Update _variant_t
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};#endif // !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)/*--------------------------------------------------------------------------------*/
/*---------------------ADOConn.cpp File---------------------------*/#include "stdafx.h"
#include "ADOConn.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endifADOConn::ADOConn()
{}ADOConn::~ADOConn()
{}// 初始化—连接数据库
void ADOConn::OnInitADOConn()
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB; Server=CZ;Database=HrSys; uid=sa; pwd=sa;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}// 执行查询
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
// 返回记录集
return m_pRecordset;
}// 执行SQL语句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
// _variant_t RecordsAffected;
try
{
// 是否已经连接数据库
if(m_pConnection == NULL)
OnInitADOConn();
// Connection对象的Execute方法:(_bstr_t CommandText,
// VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 参数RecordsAffected是操作完成后所影响的行数,
// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名
// adCmdProc-存储过程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}void ADOConn::ExitConnect()
{
// 关闭记录集和连接
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 释放环境
::CoUninitialize();
}原文连接:http://apps.hi.baidu.com/share/detail/18694643
_bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;UsreID=sa;Initial Catalog=pubs";编译的时候报错,说什么连接字符串属性无效,是何原因。
_bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=manage;Data Source=9A61C87AD7BB4B8";我改成这样的,也有报错,说什么数据库不存在
我就是不知道Initial catalog怎么去设置,还有Data source 数据源怎么设置
_bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Data;Data Source=BEANS";
Data是数据库的名字,BEANS是SQL服务管理的名称,也报错。
说用户Sa登陆失败,未与信任的SQL SERVER链接相关联