ADO访问数据库

来源:互联网 发布:mac电路设计软件 编辑:程序博客网 时间:2024/04/29 02:54


大致操作过程:

_Connectionptr : CreateInstance , Open , ... Close , Realse

_CommandPtr : CreateInstance , ActiveConnection , CommandText , Excute , ... Close , Realse

_RecordsetPtr : CreateInstance , GetCollect 、Move(MoveNext,MoveFirst)、AddNew、PutCollect、Update , ... Close , Realse


ODBC方式链接。

1、应用程序的stdafx.h头文件中(也可以在其他合适的地方)包含如下语句。

#import "C://program files//commonfiles//system//ado//msado15.dll" no_namespacerename ("EOF","adoEOF")

 

2、链接数据库

CoInitialize(NULL);                                          //初始化Com组件

_ConnectionPtr conPtr;                                      //数据库链接指针

     //conPtr.CreateInstance("ADODB.Connection");           //Connection用于与数据库服务器的链接

     conPtr.CreateInstance(__uuidof(Connection));            //Connection用于与数据库服务器的链接另一种方式

     /******************连接数据库********************/

     try

     {

         conPtr->ConnectionTimeout = 5;                          //设置连接时间

         // MySqlTest为数据源名 localhost表示本地root表示用户名 sa表示密码

         //链接方式1,使用这种方式链接时要注意在设置数据源时一定要选择一个数据库

         //conPtr->Open("DSN=MySqlTest;server=localhost;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)

         //链接方式2采用这种方式链接时在创建数据源时没有必要选择一个数据库          conPtr->Open("DSN=MySqlTest;server=localhost;database=test;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)

     }

     catch(_com_error e)                                              //捕捉异常

     {

         AfxMessageBox(e.ErrorMessage());

     }

     CoUninitialize();                                       //释放com组件//不知是否有必要

    

3、访问数据库

_RecordsetPtr recordPtr;//数据集指针

recordPtr.CreateInstance(__uuidof(Recordset));

CString cmdStr=_T("selectname,stuno from student");//student为表名 该表中有两个字段name(字符型)stuno(int型)

     try

     {

              recordPtr->Open(_variant_t(cmdStr),

              conPtr.GetInterfacePtr(),

              adOpenDynamic,

              adLockOptimistic,

              adCmdText);

     }

     catch(_com_error e)

     {

         AfxMessageBox(e.Description());

     }

     while(!(recordPtr->adoEOF))

     {//获取记录

         CStringname=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal;

         intno=recordPtr->GetCollect(_variant_t("stuno")).intVal;

         recordPtr->MoveNext();

     }

     recordPtr->Close();//关闭记录集

     recordPtr.Release();//释放空间

     conPtr->Close();//关闭连接

     conPtr.Release();//释放空间

 

非ODBC方式链接。

 

链接数据库

CoInitialize(NULL);                                          //初始化Com组件

_ConnectionPtr conPtr;                                       //数据库链接指针

     //conPtr.CreateInstance("ADODB.Connection");            //Connection用于与数据库服务器的链接

     conPtr.CreateInstance(__uuidof(Connection));            //Connection用于与数据库服务器的链接另一种方式

// MySQL ODBC 5.1 Driver为驱动名称(取决于我们为MySql安装的驱动),localhost为服务器地址,test为数据库名,root为用户名(MySql默认用户名为root),sa为密码

     CStringconStr=_T("Driver={MySQL ODBC 5.1 Driver };Server= localhost;Database=test;");

     /******************连接数据库********************/

     try

     {

         conPtr->ConnectionTimeout = 5;                          //设置连接时间

         conPtr->Open((_bstr_t)conStr, _T("root"),_T("sa"), adModeUnknown);

     }

     catch(_com_error e)                                              //捕捉异常

     {

         AfxMessageBox(e.ErrorMessage());

     }

     CoUninitialize();                                       //释放com组件

获取记录集

获取记录集的方式与ODBC方式相同



只要是在自己的电脑上对udl进行了连接测试成功后,在用记事本(如若不行,直接把文件的扩展名udl改成txt)打开这个文件,你会发现里面就写着自己电脑的数据库连接字符串!!!这都是网上别人的成果!!

0 0