/* * Author: Leng_que * Date: 2010-1-9 13:22:55 * E-mail: leng_que@yahoo.com.cn * Description: 使用ADO数据库访问技术操作Access */ #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename ("EOF", "adoEOF") #include <stdio.h> #include <conio.h> int main(void) { int iRetCode=0; int iID=0; char szName[32]={0}; _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; _CommandPtr m_pCommand; _variant_t var; //初始化COM CoInitialize(NULL); //创建连接 m_pConnection.CreateInstance(__uuidof(Connection)); try { //ADO连接字符串 const char szConnectString[] = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=xxx.mdb"; char szUserName[] = ""; char szUserPass[] = ""; m_pConnection->Open(szConnectString, szUserName, szUserPass, adModeUnknown); } catch(_com_error e) { printf("连接数据库失败!错误信息:%s/r/n", e.ErrorMessage()); getch(); iRetCode = -1; goto END; } //执行命令 m_pCommand.CreateInstance(__uuidof(Command)); m_pCommand->ActiveConnection = m_pConnection; m_pCommand->CommandText = "SELECT * FROM admin"; //待执行的SQL语句 try { m_pRecordset = m_pCommand->Execute(NULL, NULL, adCmdText); } catch(_com_error e) { printf("SQL执行失败!错误信息:%s/r/n", e.ErrorMessage()); getch(); iRetCode = -2; goto END; } //浏览记录集 try { if (!m_pRecordset->BOF) { m_pRecordset->MoveFirst(); } else { iRetCode = -3; goto END; } while (!m_pRecordset->adoEOF) { var = m_pRecordset->GetCollect("id"); if(var.vt != VT_NULL) { iID = atoi((char*)_bstr_t(var)); } var = m_pRecordset->GetCollect("name"); if(var.vt != VT_NULL) { strcpy(szName, (char*)_bstr_t(var)); } printf("id=%d, name=%s/r/n", iID,szName); m_pRecordset->MoveNext(); } } catch(_com_error e) { printf("记录提取失败!错误信息:%s/r/n", e.ErrorMessage()); getch(); iRetCode = -4; goto END; } END: if ( m_pRecordset->State ) { m_pRecordset->Close(); } m_pRecordset = NULL; if (m_pConnection->State) { m_pConnection->Close(); } m_pConnection= NULL; //反初始化COM CoUninitialize(); getch(); return iRetCode; } 说明: 其中的数据库为MSAccess,命名为:xxx.mdb。 其中有一个数据表admin,表中有两个字段,分别为:id(数据类型为:自动编号),name(数据类型为:文本)。