文章作者 100test 发表时间 2007:09:06 13:31:34
来源 100Test.Com百考试题网
{
HRESULT hr = S_OK.
::CoInitialize(NULL). //初始化Com
IADORecordBinding *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 size
TCHAR 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 bigBuff
dlg.m_ofn.lpstrFile = bigBuff.
dlg.m_ofn.nMaxFile = sizeof(bigBuff).
if(IDOK == dlg.DoModal() )
{
strFileName = dlg.GetPathName().
lstrcpy(FileName,strFileName).
OpenSchemaX(FileName).
相关文章
报检员资格考试辅导资料新人篇(七)
报检员资格考试辅导资料新人篇(六)
报检员资格考试辅导资料新人篇(五)
报检员资格考试辅导资料新人篇(四)
获取ACCE 2000数据库中所有表的名称
在VB中用代码打印ACCE 报表
提高VisualBasic访问数据库效率
VB“变态”用法之有用技术和没用指针
VB“变态”用法之高效字串指针类
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛