📄 myadoxclass.cpp
字号:
// MyAdoxClass.cpp : 实现文件
//
#include "stdafx.h"
#include "MyAdoxClass.h"
// CMyAdoxClass
CMyAdoxClass::CMyAdoxClass()
{
}
CMyAdoxClass::~CMyAdoxClass()
{
}
bool CMyAdoxClass::GetDatabaseTables(LPCWSTR pConnectStr,long *pTableCount,LPWSTR** ppTablesNameArray)
{
bool AllIsRight = true;
*pTableCount = 0;
*ppTablesNameArray = NULL;
try
{
_CatalogPtr MyCataLog;
Tables *pTables=NULL;
HRESULT hr = MyCataLog.CreateInstance(L"ADOX.Catalog");
hr = MyCataLog->put_ActiveConnection(_variant_t(pConnectStr));
if(FAILED(hr))
AllIsRight = false;
if(AllIsRight)
{
hr = MyCataLog->get_Tables(&pTables);
if(FAILED(hr))
AllIsRight = false;
}
if(AllIsRight)
{
hr = pTables->get_Count(pTableCount);
if(FAILED(hr))
AllIsRight = false;
}
LPWSTR* ppp = (LPWSTR*)::CoTaskMemAlloc(sizeof(LPWSTR)**pTableCount);
*ppTablesNameArray = ppp;
for(long i=0;i<*pTableCount;i++)
ppp[i] = NULL;
int PosForBuff = 0;
for(long i=0;i<(*pTableCount)&&AllIsRight;i++)
{
_Table *pTable = NULL;
hr = pTables->get_Item(_variant_t(long(i)),&pTable);//一定要用long型变量
if(FAILED(hr))
AllIsRight = false;
if(AllIsRight)
{
_bstr_t bstr;
hr = pTable->get_Name(bstr.GetAddress());
if(FAILED(hr))
AllIsRight = false;
if(AllIsRight)
{
DWORD len = (DWORD)wcslen(bstr);
ppp[i] = (LPWSTR)::CoTaskMemAlloc(sizeof(TCHAR)*(len+1));
wcscpy_s(ppp[i],len+1,bstr);
pTable->Release();
pTable = NULL;
}
}
}
pTables->Release();
pTables = NULL;
}
catch(...)
{
AllIsRight = false;
}
return AllIsRight;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -