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

📄 01_9_14_7.asp.html

📁 有用的VC教程,包括编程思想编程技巧程序效率等方面的指导
💻 HTML
📖 第 1 页 / 共 3 页
字号:
                        LPCSTR pszTableOwner = NULL,</td></tr></table><table width=100% ><tr><td class=a14>
                        LPCSTR pszTableName = NULL,</td></tr></table><table width=100% ><tr><td class=a14>
                        LPCSTR pszTableType = NULL,</td></tr></table><table width=100% ><tr><td class=a14>
                        UINT nOpenType = forwardOnly);</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strTableQualifier;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strTableOwner;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strTableName;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strTableType;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strRemarks;</td></tr></table><table width=100% ><tr><td class=a14>
    virtual void    DoFieldExchange(CFieldExchange*);</td></tr></table><table width=100% ><tr><td class=a14>
};</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
class CColumns : public CRecordset</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
    virtual CString GetDefaultConnect() { return ""; }</td></tr></table><table width=100% ><tr><td class=a14>
    virtual CString GetDefaultSQL() { return ""; }</td></tr></table><table width=100% ><tr><td class=a14>
public:</td></tr></table><table width=100% ><tr><td class=a14>
                    CColumns(CDatabase* pDatabase);</td></tr></table><table width=100% ><tr><td class=a14>
    BOOL             Open(LPCSTR pszTableQualifier = NULL,</td></tr></table><table width=100% ><tr><td class=a14>
                        LPCSTR pszTableOwner = NULL,</td></tr></table><table width=100% ><tr><td class=a14>
                        LPCSTR pszTableName = NULL,</td></tr></table><table width=100% ><tr><td class=a14>
                        LPCSTR pszColumnName = NULL,</td></tr></table><table width=100% ><tr><td class=a14>
                        UINT nOpenType = forwardOnly);</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strTableQualifier;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strTableOwner;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strTableName;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strColumnName;</td></tr></table><table width=100% ><tr><td class=a14>
    int                 m_nDataType;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strTypeName;</td></tr></table><table width=100% ><tr><td class=a14>
    long             m_nPrecision;</td></tr></table><table width=100% ><tr><td class=a14>
    long             m_nLength;     </td></tr></table><table width=100% ><tr><td class=a14>
    int                 m_nScale;</td></tr></table><table width=100% ><tr><td class=a14>
    int                 m_nRadix;</td></tr></table><table width=100% ><tr><td class=a14>
    int                 m_fNullable;</td></tr></table><table width=100% ><tr><td class=a14>
    CString             m_strRemarks;</td></tr></table><table width=100% ><tr><td class=a14>
    virtual void    DoFieldExchange(CFieldExchange*);</td></tr></table><table width=100% ><tr><td class=a14>
};</td></tr></table><table width=100% ><tr><td class=a14>
BOOL CColumns::Open(LPCSTR pszTableQualifier,</td></tr></table><table width=100% ><tr><td class=a14>
    LPCSTR pszTableOwner,LPCSTR pszTableName,LPCSTR pszColumnName,</td></tr></table><table width=100% ><tr><td class=a14>
    UINT nOpenType)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
    RETCODE    nRetCode;</td></tr></table><table width=100% ><tr><td class=a14>
    UWORD    bFunctionExists;</td></tr></table><table width=100% ><tr><td class=a14>
    //检验是否支持SQLColumns函数 </td></tr></table><table width=100% ><tr><td class=a14>
    AFX_SQL_SYNC(::SQLGetFunctions(m_pDatabase->m_hdbc,</td></tr></table><table width=100% ><tr><td class=a14>
        SQL_API_SQLCOLUMNS,&bFunctionExists));</td></tr></table><table width=100% ><tr><td class=a14>
    if (!Check(nRetCode) || !bFunctionExists)</td></tr></table><table width=100% ><tr><td class=a14>
    {</td></tr></table><table width=100% ><tr><td class=a14>
        if (!bFunctionExists)</td></tr></table><table width=100% ><tr><td class=a14>
            TRACE(_T("SQLColumns 不支持\n"));</td></tr></table><table width=100% ><tr><td class=a14>
        return FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
    }</td></tr></table><table width=100% ><tr><td class=a14>
    //设置缓冲区状态,分配语句句柄 </td></tr></table><table width=100% ><tr><td class=a14>
    SetState(nOpenType,NULL,readOnly);</td></tr></table><table width=100% ><tr><td class=a14>
    if (!AllocHstmt())</td></tr></table><table width=100% ><tr><td class=a14>
        return FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
    TRY</td></tr></table><table width=100% ><tr><td class=a14>
    {</td></tr></table><table width=100% ><tr><td class=a14>
        OnSetOptions(m_hstmt);</td></tr></table><table width=100% ><tr><td class=a14>
        AllocStatusArrays();</td></tr></table><table width=100% ><tr><td class=a14>
        // 调用ODBC的SQLColumns函数</td></tr></table><table width=100% ><tr><td class=a14>
        AFX_ODBC_CALL(::SQLColumns(m_hstmt,</td></tr></table><table width=100% ><tr><td class=a14>
            (UCHAR FAR*)pszTableQualifier,SQL_NTS,</td></tr></table><table width=100% ><tr><td class=a14>
            (UCHAR FAR*)pszTableOwner,SQL_NTS,</td></tr></table><table width=100% ><tr><td class=a14>
            (UCHAR FAR*)pszTableName,SQL_NTS,</td></tr></table><table width=100% ><tr><td class=a14>
            (UCHAR FAR*)pszColumnName,SQL_NTS));</td></tr></table><table width=100% ><tr><td class=a14>
        if (!Check(nRetCode))</td></tr></table><table width=100% ><tr><td class=a14>
            ThrowDBException(nRetCode,m_hstmt);</td></tr></table><table width=100% ><tr><td class=a14>
        // 分配内存,填写信息</td></tr></table><table width=100% ><tr><td class=a14>
        AllocAndCacheFieldInfo();</td></tr></table><table width=100% ><tr><td class=a14>
        AllocRowset();</td></tr></table><table width=100% ><tr><td class=a14>
        MoveNext();</td></tr></table><table width=100% ><tr><td class=a14>
        m_bBOF = m_bEOF;</td></tr></table><table width=100% ><tr><td class=a14>
    }</td></tr></table><table width=100% ><tr><td class=a14>
//异常信息的捕获</td></tr></table><table width=100% ><tr><td class=a14>
    CATCH_ALL(e)</td></tr></table><table width=100% ><tr><td class=a14>
    {</td></tr></table><table width=100% ><tr><td class=a14>
        Close();</td></tr></table><table width=100% ><tr><td class=a14>
        THROW_LAST();</td></tr></table><table width=100% ><tr><td class=a14>
    }</td></tr></table><table width=100% ><tr><td class=a14>
    END_CATCH_ALL</td></tr></table><table width=100% ><tr><td class=a14>
    return TRUE;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
//获取记录集信息</td></tr></table><table width=100% ><tr><td class=a14>
void CColumns::DoFieldExchange(CFieldExchange* pFX)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
    pFX->SetFieldType(CFieldExchange::outputColumn);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Text(pFX,_T("TABLE_QUALIFIER"),m_strTableQualifier);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Text(pFX,_T("TABLE_OWNER"),m_strTableOwner);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Text(pFX,_T("TABLE_NAME"),m_strTableName);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Text(pFX,_T("COLUMN_NAME"),m_strColumnName);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Int(pFX,_T("DATA_TYPE"),m_nDataType);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Text(pFX,_T("TYPE_NAME"),m_strTypeName);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Long(pFX,_T("PRECISION"),m_nPrecision);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Long(pFX,_T("LENGTH"),m_nLength);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Int(pFX,_T("SCALE"),m_nScale);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Int(pFX,_T("RADIX"),m_nRadix);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Int(pFX,_T("NULLABLE"),m_fNullable);</td></tr></table><table width=100% ><tr><td class=a14>
    RFX_Text(pFX,_T("REMARKS"),m_strRemarks);</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
CColumns::CColumns(CDatabase* pDatabase): CRecordset(pDatabase)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
    m_strTableQualifier    = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_strTableOwner        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_strTableName        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_strColumnName        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_nDataType             = 0;</td></tr></table><table width=100% ><tr><td class=a14>
    m_strTypeName        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_nPrecision        = 0;</td></tr></table><table width=100% ><tr><td class=a14>
    m_nLength             = 0;</td></tr></table><table width=100% ><tr><td class=a14>
    m_nScale             = 0;</td></tr></table><table width=100% ><tr><td class=a14>
    m_nRadix             = 0;</td></tr></table><table width=100% ><tr><td class=a14>
    m_fNullable             = 0;</td></tr></table><table width=100% ><tr><td class=a14>
    m_strRemarks        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_nFields = 12;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CTable::CTable(CDatabase* pDatabase): CRecordset(pDatabase)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
    m_strTableQualifier    = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_strTableOwner        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_strTableName        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_strTableType        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_strRemarks        = _T("");</td></tr></table><table width=100% ><tr><td class=a14>
    m_nFields = 5;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
BOOL CTable::Open(LPCSTR pszTableQualifier,</td></tr></table><table width=100% ><tr><td class=a14>
    LPCSTR pszTableOwner,LPCSTR pszTableName,LPCSTR pszTableType,</td></tr></table><table width=100% ><tr><td class=a14>
    UINT nOpenType)</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
    RETCODE    nRetCode;</td></tr></table><table width=100% ><tr><td class=a14>
    UWORD    bFunctionExists;</td></tr></table><table width=100% ><tr><td class=a14>
    //检验是否支持SQLTables 函数 </td></tr></table><table width=100% ><tr><td class=a14>
    AFX_SQL_SYNC(::SQLGetFunctions(m_pDatabase->m_hdbc,</td></tr></table><table width=100% ><tr><td class=a14>

⌨️ 快捷键说明

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