如何通过ADO接口连接数据库

问题详述:

ADO最主要的优点是易于使用、速度快、内存支出少和磁盘痕迹小。在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所以这些都是为了提供轻量、高性能接口。那么如何实现ADO连接数据库呢?

打开百度APP,查看更多高清图片
如果对你有帮助的话,帮忙推荐同学朋友关注公众号,是小编最好的支持

具体过程:

首先需要一个ODBC数据源。然后用_ConnectionPtr对象打开数据库连接,_RecordsetPrt对象获取记录集,这样就完成了数据库的链接。最后在不使用该数据库后要需要先后使用函数_RecordsetPrt::Close和_ConnectionPt::Close断开连接。

相关代码如下:

(1) 为了使用ADO,必须先引入Ado库文件(在stdafx.h文件中),代码如下:

#import"c:\Program Files\Common Files\System\ado\msado15.dll"no_namespacerename(“EOF”,“adoEOF”)

(2) 分别声明数据库连接_ConnectionPtr和记录集_RecordsetPtr类型的变量;

_ConnectionPtr pConn;//数据库连接

_RecordsetPtr pPtr; //记录集对象

(3) 完成数据库的链接,代码如下:

BOOL CMainDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// 将“关于…”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

}

CommandPtr pCommandPtr;

try

{

if (FAILED(pCommandPtr.CreateInstance(“ADODB.Command”)))

{

//AfxMessageBox(“GetUserIdFromUserProArray 创建_CommandPtr对象失败”);

return 0;

}

}

catch(_com_error e)

{

CString errormessage2;

errormessage2.Format(“CMainDlg GetUserIdFromUserProArray-创建_CommandPtr对象异常!\r\n 错误描述:%s \r\n 错误信息:%s”,

(LPCTSTR)e.Description(),e.ErrorMessage());

//AfxMessageBox(errormessage2);

PrintRunningLog((LPSTR)(LPCTSTR)errormessage2);

return 0;

}

//1@[UserProArray]

pCommandPtr->ActiveConnection = pConnection;

for(int ii = 0;ii<1;ii++)

{

_RecordsetPtr pSystemSetWifiPtr;

try

{

CString strSystemSetSql;

strSystemSetSql.Format(“select UserId from [UserProArray] where [projectCode]=’%s’”,procode);

//CString strSystemSetSql = "select * from 系统设置 ";

pCommandPtr->CommandText = _bstr_t(strSystemSetSql);

pSystemSetWifiPtr = pCommandPtr->Execute(NULL,NULL,adCmdText);

if (pSystemSetWifiPtr == NULL) //判断记录集是否为空,空退出

{

break;

}

if (pSystemSetWifiPtr->adoEOF) //判断数据库是否有数据

{

break;

}

if (pSystemSetWifiPtr->GetRecordCount()) //获取数据库数据数目

{

pSystemSetWifiPtr->MoveFirst(); //指向第一行

}

else

{

//释放记录集和连接

pSystemSetWifiPtr->Close();

pSystemSetWifiPtr.Release();

pSystemSetWifiPtr = NULL;

break;

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章