290上位机VC MFC使用ADO读取数据库全部表格名称
ADO读取数据库表格名称
功能展示
ADO编写数据库程序,有时在获取指定数据库内全部表格的名称,我们当前例程就实现这一功能,效果如图,点击按钮<读取指定数据库表名>可以浏览要读取的数据库文件,确认后例程会显示出数据库文件的路径,并读取出文件内的全部表格名称,显示在列表框中;
要点提示
IADORecordBinding接口有三种方法,BindtoRecordSet,addnew,update,这三方法有且只有一指针类型的参数,参数指定IADORecordBinding的实例;
实现功能
1.新建基于对话框的应用程序
2.在App类的InitInstance()函数中添加代码AfxOleInit();//初始化COM,创建ADO连接等操作
3.在stdafx.h中加入ADO支持库
#import “c:\program files\common files\system\ado\msado15.dll” no_namespace rename (“EOF”, “adoEOF”) 及#include "icrsint.h"//IADORecordBinding 头文件
4.在主对话框添加编辑框IDC_EDIT ,列表框IDC_LIST ,再添加一按钮,响应按钮的点击函数
void CGkbc8Dlg::OnButton()
{
CFileDialog dlg(TRUE,".mdb",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"mdb文件(.mdb)|*.mdb|全部文件(*.*)|*.*||");
if(IDOK==dlg.DoModal())
{
SetDlgItemText(IDC_EDIT,dlg.GetPathName());
CListBox* pListBox=(CListBox*)GetDlgItem(IDC_LIST);
pListBox->ResetContent();
//<>
HRESULT hr = S_OK;
IADORecordBinding *picRs = NULL;
_RecordsetPtr pRstSchema("ADODB.Recordset");
_ConnectionPtr pConnection("ADODB.Connection" );
pConnection->ConnectionString = (_bstr_t)dlg.GetPathName();;
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")))
pListBox->AddString((LPCSTR) table_name);//添加表的名称
pRstSchema->MoveNext();
}
pRstSchema->Close();
pConnection->Close();
}
catch (_com_error &e)
{
printf("Error:\n");
printf("Code=%08lx\n",e.Error());
printf("Meaning=%s\n",e.ErrorMessage());
printf("Source=%s\n",(LPCSTR)e.Source());
printf("Description=%s\n",(LPCSTR)e.Description());
}
}
}
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|