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

📄 tableset.cpp

📁 VC++技术内幕(第四版)的实例
💻 CPP
字号:
// sqltable.cpp : implementation of the CTables class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1993 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and Microsoft
// QuickHelp and/or WinHelp documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.


#include "stdafx.h"
#include "tableset.h"

/////////////////////////////////////////////////////////////////////////////
// CTables implementation

IMPLEMENT_DYNAMIC(CTables, CRecordset)

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

BOOL CTables::Open(UINT nOpenType /* = snapshot */,
    LPCSTR lpszSQL /* = NULL */, DWORD dwOptions /* = none */)
{
    // Allocation and opening of database not supported
    if (m_pDatabase == SQL_NULL_HDBC || !m_pDatabase->IsOpen())
      return FALSE;

    // allocate an hstmt (if not one already) for the recordset
    RETCODE nRetCode;
    if (m_hstmt == SQL_NULL_HSTMT)
    {
      AFX_SQL_SYNC(::SQLAllocStmt(m_pDatabase->m_hdbc, &m_hstmt));
      if (!Check(nRetCode))
        AfxThrowDBException(SQL_INVALID_HANDLE, m_pDatabase, SQL_NULL_HSTMT);
    }

    TRY
    {
      // set any options, like timeouts, scrolling options
      OnSetOptions(m_hstmt);

      // call the ODBC catalog function with data member params
      RETCODE nRetCode;
      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,
          (m_strTypeParam.IsEmpty()? (UCHAR FAR *)NULL: (UCHAR FAR *)(const char*)m_strTypeParam), SQL_NTS));
      if (!Check(nRetCode))
      {
        AfxThrowDBException(nRetCode, m_pDatabase, m_hstmt);
      }
      // load first record
      MoveFirst();
    }
    CATCH_ALL(e)
    {
      Close();
      THROW_LAST();
    }
    END_CATCH_ALL
    return TRUE;
}

CString CTables::GetDefaultConnect()
{
    return "ODBC;";
}

CString CTables::GetDefaultSQL()
{
    // should SQLTables directly, so GetSQL should never be called
    ASSERT(FALSE);
    return "!";
}

void CTables::DoFieldExchange(CFieldExchange* pFX)
{
    //{{AFX_FIELD_MAP(CTables)
    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
}

⌨️ 快捷键说明

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