现在的位置: 首页 > 综合 > 正文

VC ADO连接SQL数据库

2017年11月08日 ⁄ 综合 ⁄ 共 2554字 ⁄ 字号 评论关闭

 


VC ADO连接SQL数据库

数据源方式连接。

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

#import "C://program files//common
files//system//ado//msado15.dll"
no_namespace
rename ("EOF",
"adoEOF")

 

2、连接数据库

CoInitialize(NULL);                                          //初始化Com组件不知是否有必要

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

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

     CString
conStr;

     conStr.Format(_T("DSN=%s;"), _T("数据源名"));

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

     try

     {

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

         conPtr->Open((_bstr_t)conStr, _T("用户名"),_T("密码"), adModeUnknown);

     }

     catch(_com_error e)                                              //捕捉异常

     {

         AfxMessageBox(e.ErrorMessage());

     }

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

        

3、访问数据库

_RecordsetPtr recordPtr;//数据集指针

recordPtr.CreateInstance(__uuidof(Recordset));

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

     try

     {

              recordPtr->Open(_variant_t(cmdStr),

              conPtr.GetInterfacePtr(),

              adOpenDynamic,

              adLockOptimistic,

              adCmdText);

     }

     catch
(_com_error 
e)

     {

         AfxMessageBox(e.Description());

     }

     while
(!(recordPtr->adoEOF))

     {//获取记录

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

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

         recordPtr->MoveNext();

     }

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

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

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

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

 

非数据源方式连接。

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

#import "C://program files//common
files//system//ado//msado15.dll"
no_namespace
rename ("EOF",
"adoEOF")

 

连接数据库

CoInitialize(NULL);                                          //初始化Com组件不知是否有必要

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

     CString
conStr;// (local)
表示本地                       //数据库连接字符串

     conStr.Format(_T("Driver=SQL SERVER;Database=%s;Server=%s;"), _T("数据库名"),_T("(local)"));

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

     try

     {

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

         conPtr->Open(_bstr_t(conStr),_T("用户名"),_T("密码"),option);    //连接SQL
SERVER

     }

     catch(_com_error e)                                              //捕捉异常

     {

         AfxMessageBox(e.ErrorMessage());

     }

     CoUninitialize();                                            //释放com组件

获取记录集

获取记录集的方式与数据源方式访问数据库相同

 

 

 

抱歉!评论已关闭.