用ADO方法访问数据库主要有两步:首先建立数据库连接,然后打开数据集。打开的数据集就是访问的数据。
一步一步看,先看数据库的建立:
- //定义数据库对象
- CADODatabase m_Data;
- //定义数据集指针
- CADORecordset* pAdo;
- //设定打开字符串,前面一部分字符串操作是固定模板,就是将数据操作和文件路径相关联
- CString strPath = _T("Provider = Microsoft.JET.OLEDB.4.0;Data Source =") +
- /*Your database file'address like this:"e://demo//ADO//*/ + _T("data.mdb");
- //打开数据库
- if (!m_Data.Open(strPath))
- {
- AfxMessageBox(_T("Database open error!"));
- return ;
- }
- //建立数据集
- pAdo = new CADORecordset(&m_Data);//参数就是刚才打开的数据库对象的指针
- //进行数据查询操作,假定数据库里有"userinfo"这样一个表,通过ADO类的Open函数就能
- //访问表里满足条件的数据
- //表userinfo的数据为:ID(自动编号),UserName,UserAge,Sex
- CString mData[4];
- mData[0] = _T("ID");
- mData[1] = _T("UserName");
- mData[2] = _T("UserAge");
- mData[3] = _T("Sex");
- if (!pAdo->Open(_T("select * from userinfo")))
- {
- AfxMessageBox(_T("Table open error!"));
- eturn ;
- }
- //取得数据的总数目
- int nCount = pAdo->GetRecordCount();
- if(nCount>=1)
- {
- //将记录集指针移动到首个记录
- pAdo->MoveFirst();
- CString sUserName,sSex;
- LONG nId = -1;
- LONG nAge = -1;
- for (int i = 0 ; i < nRecords ; i ++)
- {
- //通过GetFieldValue函数就能取得对应的数据
- pAdo->GetFieldValue(mData[0],nId);
- pAdo->GetFieldValue(mData[1],sUserName);
- pAdo->GetFieldValue(mData[2],nAge);
- pAdo->GetFieldValue(mData[3],sSex);
- //对取得的数据操作
- //显示在ListCtrl里,或者其它...
- //每访问一次,指针指向下一个记录,这样就能访问所有记录
- pAdo->MoveNext();
- }
- }
上面代码只是使用了一个简单的表查询语句,如果想实现其它查询只需使用ADO提供的Open函数操作即可,例如如果想查询表userinfo里的所有"sex = man"的记录,则可以这样写:
pAdo->Open(_T("select * from userinfo where sex = 'man' "));
通过改变Open函数后面的参数就能实现对数据的基本的查询和操作。补充一个小的地方,当查询参数化时要注意查询语句后面条件是有" ' "小的单引号的。
例如:CString str = _T("Virqin");
pAdo->Open(_T("delete from userinfo where username = ' ") + str + _T(" ' "));
上面就是ADO访问数据库了,ODBC还没有实现,大体都差不多。现在觉得使用VC开发数据库相关的其实挺繁琐的,Delphi开发好像挺不错的,只是没有时间去看....大四了,感觉时间一天一天在减小,少有的压迫感。