void OpenSchemaX(TCHAR *TableName){HRESULT hr = S_OK;::CoInitialize(NULL); //初始化ComIADORecordBinding *picRs = NULL;_RecordsetPtr pRstSchema(\”ADODB.Recordset\”);_ConnectionPtr pConnection(\”ADODB.Connection\” );pConnection->ConnectionString = TableName;pConnection->Provider = \”Microsoft.Jet.OLEDB.4.0\”;try{pConnection->Open(pConnection->ConnectionString, \”\”, \”\”, adModeUnknown);pRstSchema->QueryInterface(__uuidof(IADORecordBinding), (LPVOID*)&picRs);pRstSchema = pConnection->OpenSchema(adSchemaTables);//枚举表的名称处理while(!(pRstSchema->EndOfFile)){CString strTableType;_bstr_t table_name = pRstSchema->Fields->GetItem(\”TABLE_NAME\”)->Value;//获取表的名称_bstr_t table_type = pRstSchema->Fields->GetItem(\”TABLE_TYPE\”)->Value;//获取表的类型strTableType.Format(\”%s\”,(LPCSTR) table_type);if(!lstrcmp(strTableType,_T(\”TABLE\”))){m_strList.AddString((LPCSTR) table_name);//添加表的名称}pRstSchema->MoveNext();}// Clean up objects before exit.pRstSchema->Close();pConnection->Close();}catch (_com_error &e){// Notify the user of errors if any.// Pass a connection pointer accessed from the Connection. PrintProviderError(pConnection);PrintComError(e);}CoUninitialize();}void PrintProviderError(_ConnectionPtr pConnection){ErrorPtr pErr = NULL;if( (pConnection->Errors->Count) > 0){long nCount = pConnection->Errors->Count;// Collection ranges from 0 to nCount -1.for(long i = 0;i < nCount;i++){pErr = pConnection->Errors->GetItem(i);CString strError;strError.Format(\”Error number: %x\\t%s\”, pErr->Number, pErr->Description);AfxMessageBox(strError);}}}void PrintComError(_com_error &e){_bstr_t bstrSource(e.Source());_bstr_t bstrDescription(e.Description());// Print COM errors. CString strError;strError.Format(\”Error number: Description = %s\\tCode meaning = %s\”,(LPCSTR) bstrDescription, e.ErrorMessage());AfxMessageBox(strError);}调用方法:CString strFileName;TCHAR FileName[MAX_PATH];TCHAR bigBuff[2048] = _T(\”\”); // maximum common dialog buffer sizeTCHAR szFilter[] = _T(\”Text Files (*.mdb)|*.mdb|All Files (*.*)|*.*\”);CFileDialog dlg(TRUE, NULL, NULL,OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, szFilter);// Modify OPENFILENAME members directly to point to bigBuffdlg.m_ofn.lpstrFile = bigBuff;dlg.m_ofn.nMaxFile = sizeof(bigBuff);if(IDOK == dlg.DoModal() ){strFileName = dlg.GetPathName();lstrcpy(FileName,strFileName);OpenSchemaX(FileName);}(出处:风闪网路学院)
常见问题
相关文章
猜你喜欢
- 用 INNER JOIN语法联接多个表建记录集 2023-12-08
- union这个连接是有什么用的和INNER JOIN有什么区别 2023-12-08
- Microsoft Access 数据库常规规格 2023-12-08
- 随机提取N条记录 2023-12-08
- 给你的数据库文件减肥 2023-12-08
- 将Access数据库移植到SQL Server 2023-12-08
- Access使用查询–1.2.用选择查询进行分组数据的计算 2023-12-08
- Access使用宏控制程序 2023-12-08
- Access使用宏控制程序 3.在宏中使用条件 2023-12-08
- Access使用宏控制程序 4.常用的宏操作 2023-12-08