VC+ADO上连接并操作sql2005数据库方法总结
VC+ADO下连接并操作sql2005数据库方法总结
最近在用VC ado连接SQL2005做开发,在网上也参考了好多资料,自己研究了几天,最后把使用方法思路整理下:
在需要使用的地方按如下框架使用:
0. 定义一个CAdoConn 类全局对象, 例如:在CTestDialogI添加一个公有的成员变量CAdoConn m_adoconn;
1. 调用初始化OLE/COM库环境并连接数据库, 如:a_adoconn.OnInitADOConn();
2. 定义SQL查询字串,如:_bstr_t strSQL = "Select * from test";
3. 定义一个_RecordsetPtr类对象接收GetRecordSet(_bstr_t bstrSQL)返回的记录集,
如:_RecordsetPtr m_pAddset=GetRecordSet(_bstr_t bstrSQL);
4. 通过m_pAddset 调用相关方法(MoveFirst,MoveNext,MovePrevious,MoveLast,AddNew,GetCollect,PutCollect等等)
进行一系列相关操作
5. 关闭连接, m_adoconn.ExitConnect();
相信大家一定有同感,网上vc下ADO连接sql2005的资料是比较少的,而且思路并不是很清晰,没用过的同鞋照上面的思路走一定没有问题,而且直接用下面给出的类就能用!
经过几天的摸索,以后可以轻松的使用ado连接sql数据库了!嘿嘿 ,希望你也能和我一样能顺利使用!
有问题可以留言,我一定尽量解答:
添加新类的过程就不说了:
下面是头文件跟.CPP实现文件。
头文件:
#import "c:Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
class CAdoConn
{
public:
//定义变量
_ConnectionPtr m_pConnection; //定义连接对象
_RecordsetPtr m_pRecordset; //定义记录集对象
_CommandPtr m_pCommand; // 定义命令集对象
CAdoConn();
virtual ~CAdoConn();
//初始化连接数据库
void OnInitADOConn();
//执行查询
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
//执行SQL语句,Inset Update _variant_t
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
.cpp文件如下,即类中几个方法的实现:
CAdoConn::CAdoConn()
{
}
CAdoConn::~CAdoConn()
{
}
//初始化OLE/COM库环境并连接数据库
void CAdoConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
// 创建Connection对象实例
m_pConnection.CreateInstance(__uuidof(Connection));// __uuidof(Connection) 可以换成"ADODB.Connection"
_bstr_t strConnect="Driver={SQL Server};Server=PC2011092510DPA;Database=db_student";
m_pConnection->Open(strConnect,"","",adModeUnknown); //建立连接
}
catch (_com_error e)
{
// 显示错误信息
MessageBox(NULL,e.Description(),"错误提示",0);
}
}
_RecordsetPtr& CAdoConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset)); //__uuidof(Recordset) 可以换成"ADODB.Recordset"
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
MessageBox(NULL,e.Description(),"错误提示",0);
}
// 返回记录集
最近在用VC ado连接SQL2005做开发,在网上也参考了好多资料,自己研究了几天,最后把使用方法思路整理下:
在需要使用的地方按如下框架使用:
0. 定义一个CAdoConn 类全局对象, 例如:在CTestDialogI添加一个公有的成员变量CAdoConn m_adoconn;
1. 调用初始化OLE/COM库环境并连接数据库, 如:a_adoconn.OnInitADOConn();
2. 定义SQL查询字串,如:_bstr_t strSQL = "Select * from test";
3. 定义一个_RecordsetPtr类对象接收GetRecordSet(_bstr_t bstrSQL)返回的记录集,
如:_RecordsetPtr m_pAddset=GetRecordSet(_bstr_t bstrSQL);
4. 通过m_pAddset 调用相关方法(MoveFirst,MoveNext,MovePrevious,MoveLast,AddNew,GetCollect,PutCollect等等)
进行一系列相关操作
5. 关闭连接, m_adoconn.ExitConnect();
相信大家一定有同感,网上vc下ADO连接sql2005的资料是比较少的,而且思路并不是很清晰,没用过的同鞋照上面的思路走一定没有问题,而且直接用下面给出的类就能用!
经过几天的摸索,以后可以轻松的使用ado连接sql数据库了!嘿嘿 ,希望你也能和我一样能顺利使用!
有问题可以留言,我一定尽量解答:
添加新类的过程就不说了:
下面是头文件跟.CPP实现文件。
头文件:
#import "c:Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
class CAdoConn
{
public:
//定义变量
_ConnectionPtr m_pConnection; //定义连接对象
_RecordsetPtr m_pRecordset; //定义记录集对象
_CommandPtr m_pCommand; // 定义命令集对象
CAdoConn();
virtual ~CAdoConn();
//初始化连接数据库
void OnInitADOConn();
//执行查询
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
//执行SQL语句,Inset Update _variant_t
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
.cpp文件如下,即类中几个方法的实现:
CAdoConn::CAdoConn()
{
}
CAdoConn::~CAdoConn()
{
}
//初始化OLE/COM库环境并连接数据库
void CAdoConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
// 创建Connection对象实例
m_pConnection.CreateInstance(__uuidof(Connection));// __uuidof(Connection) 可以换成"ADODB.Connection"
_bstr_t strConnect="Driver={SQL Server};Server=PC2011092510DPA;Database=db_student";
m_pConnection->Open(strConnect,"","",adModeUnknown); //建立连接
}
catch (_com_error e)
{
// 显示错误信息
MessageBox(NULL,e.Description(),"错误提示",0);
}
}
_RecordsetPtr& CAdoConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset)); //__uuidof(Recordset) 可以换成"ADODB.Recordset"
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
MessageBox(NULL,e.Description(),"错误提示",0);
}
// 返回记录集