问题详述: 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; } } |
|