📄 tableset.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 + -