⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myadoxclass.cpp

📁 采用VC++编写访问数据库非常麻烦
💻 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 + -