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

📄 tableset.cpp

📁 实例有关说明: 数据源:本实例使用的数据源在本章实例MyOdbcSmpl目录中
💻 CPP
字号:
// TableSet.cpp : implementation file
//

#include "stdafx.h"
#include "MyOdbcSmpl.h"
#include "TableSet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTableSet

IMPLEMENT_DYNAMIC(CTableSet, CRecordset)

CTableSet::CTableSet(CDatabase* pdb)
	: CRecordset(pdb)
{
	//{{AFX_FIELD_INIT(CTableSet)
	m_strQualifier = "";
	m_strOwner = "";
	m_strName = "";
	m_strType = "";
	m_strRemarks = "";
	m_nFields = 5;
	//}}AFX_FIELD_INIT
	m_strQualifierParam = "";
	m_strOwnerParam = "";
	m_strNameParam = "";
	m_strTypeParam = "";
}


CString CTableSet::GetDefaultConnect()
{
	return _T("ODBC;");
}

CString CTableSet::GetDefaultSQL()
{
	ASSERT(FALSE);
	return "!";
}

void CTableSet::DoFieldExchange(CFieldExchange* pFX)
{
	//{{AFX_FIELD_MAP(CTableSet)
	pFX->SetFieldType(CFieldExchange::outputColumn);
	RFX_Text(pFX, "table_qualifier", m_strQualifier);
	RFX_Text(pFX, "table_owner", m_strOwner);
	RFX_Text(pFX, "table_name", m_strName);
	RFX_Text(pFX, "table_type", m_strType);
	RFX_Text(pFX, "remarks", m_strRemarks);
	//}}AFX_FIELD_MAP
}

/////////////////////////////////////////////////////////////////////////////
// CTableSet diagnostics

#ifdef _DEBUG
void CTableSet::AssertValid() const
{
	CRecordset::AssertValid();
}

void CTableSet::Dump(CDumpContext& dc) const
{
	CRecordset::Dump(dc);
}
#endif //_DEBUG

BOOL CTableSet::Open(UINT nOpenType, LPCTSTR lpszSql, DWORD dwOptions) 
{
	ASSERT(lpszSql == NULL);

	RETCODE nRetCode;

	// 设置缓冲区状态
	SetState(nOpenType,NULL,noDirtyFieldCheck);
	// 分配语句句柄
	if (!AllocHstmt())
		return FALSE;
	
	TRY
	{
		OnSetOptions(m_hstmt);
		AllocStatusArrays();

		// 调用参数化ODBC编目函数
		AFX_SQL_ASYNC(this, (::SQLTables)(m_hstmt,
			(m_strQualifierParam.IsEmpty()? (UCHAR FAR *)NULL: (UCHAR FAR *)(const char*)m_strQualifierParam), SQL_NTS,
			(m_strOwnerParam.IsEmpty()? (UCHAR FAR *)NULL: (UCHAR FAR *)(const char*)m_strOwnerParam), SQL_NTS,
			(m_strNameParam.IsEmpty()? (UCHAR FAR *)NULL: (UCHAR FAR *)(const char*)m_strNameParam), SQL_NTS,
			(UCHAR FAR *)"'TABLE','VIEW'",SQL_NTS));
		if (!Check(nRetCode))
			ThrowDBException(nRetCode, m_hstmt);

		// 分配内存和缓冲区
		AllocAndCacheFieldInfo();
		AllocRowset();

		// 获得结果集中第一条记录
		MoveNext();

		// 如果已经是结果集尾,则结果集为空,设置ISBOF,ISEOF为真。
		m_bBOF = m_bEOF;
	}

	CATCH_ALL(e)
	{
		Close();
		THROW_LAST();
	}
	END_CATCH_ALL

	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -