获取ACCE 2000数据库中所有表的名称

文章作者 100test 发表时间 2007:09:06 13:31:34
来源 100Test.Com百考试题网


void OpenSchemaX(TCHAR *TableName)

{

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“变态”用法之高效字串指针类
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛