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