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

📄 db.h

📁 浙江大学的悟空嵌入式系统模拟器
💻 H
📖 第 1 页 / 共 3 页
字号:
///////////////////////////////////////////////////////////////////////////////
// Name:        wx/db.h
// Purpose:     Header file wxDb class.  The wxDb class represents a connection
//              to an ODBC data source.  The wxDb class allows operations on the data
//              source such as opening and closing the data source.
// Author:      Doug Card
// Modified by: George Tasker
//              Bart Jourquin
//              Mark Johnson, wxWindows@mj10777.de
// Mods:        Dec, 1998:
//                -Added support for SQL statement logging and database cataloging
//                     April, 1999
//                -Added QUERY_ONLY mode support to reduce default number of cursors
//                -Added additional SQL logging code
//                -Added DEBUG-ONLY tracking of Ctable objects to detect orphaned DB connections
//                -Set ODBC option to only read committed writes to the DB so all
//                     databases operate the same in that respect
//
// Created:     9.96
// RCS-ID:      $Id: db.h,v 1.1 2005/03/16 06:48:50 kehc Exp $
// Copyright:   (c) 1996 Remstar International, Inc.
// Licence:     wxWindows licence, plus:
// Notice:      This class library and its intellectual design are free of charge for use,
//              modification, enhancement, debugging under the following conditions:
//              1) These classes may only be used as part of the implementation of a
//                 wxWindows-based application
//              2) All enhancements and bug fixes are to be submitted back to the wxWindows
//                 user groups free of all charges for use with the wxWindows library.
//              3) These classes may not be distributed as part of any other class library,
//                 DLL, text (written or electronic), other than a complete distribution of
//                 the wxWindows GUI development toolkit.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef _WX_DB_H_
#define _WX_DB_H_


// BJO 20000503: introduce new GetColumns members which are more database independant and 
//               return columns in the order they were created
#define OLD_GETCOLUMNS 1
#define EXPERIMENTAL_WXDB_FUNCTIONS 1

#include "wx/version.h"

#if defined(__GNUG__) && !defined(__APPLE__)
    #pragma interface "db.h"
#endif

#include "wx/setup.h"

#include "wx/defs.h"
#include "wx/string.h"

#ifdef __VISUALC__
    // we need to include standard Windows headers but we can't include
    // <windows.h> directly when using MFC because it includes it itself in a
    // different manner
    #if wxUSE_MFC
        #include <afxwin.h>
    #else // !wxUSE_MFC
        #ifndef STRICT
            #define STRICT 1
        #endif

        #include <windows.h>
        #include "wx/msw/winundef.h"
    #endif // wxUSE_MFC/!wxUSE_MFC

    // If you use the wxDbCreateDataSource() function with MSW/VC6,
    // you cannot use the iODBC headers, you must use the VC headers,
    // plus the odbcinst.h header - gt Nov 2 2000
    //
    // Must add "odbccp32.lib" in \wx2\wxWindows\src\makevc.env to the WINLIBS= line
    //
    #include "sql.h"
    #include "sqlext.h"
    #include "odbcinst.h"
#elif defined( __VMS )
    // For OpenVMS use the ones from the library
    extern "C" {
        #include <isql.h>
        #include <isqlext.h>
    }
#else // !__VISUALC__, !__VMS
    extern "C" {
        #include "wx/isql.h"
        #include "wx/isqlext.h"
    }
#endif


typedef float SFLOAT;
typedef double SDOUBLE;
typedef unsigned int UINT;
#define ULONG UDWORD

#ifndef wxODBC_FWD_ONLY_CURSORS
#define wxODBC_FWD_ONLY_CURSORS 1
#endif

enum enumDummy {enumDum1};

#ifndef SQL_C_BOOLEAN
#define SQL_C_BOOLEAN(datatype) (sizeof(datatype) == 1 ? SQL_C_UTINYINT : (sizeof(datatype) == 2 ? SQL_C_USHORT : SQL_C_ULONG))
//#  define SQL_C_BOOLEAN (sizeof(int) == 2 ? SQL_C_USHORT : SQL_C_ULONG)
#endif

#ifndef SQL_C_ENUM
#define SQL_C_ENUM (sizeof(enumDummy) == 2 ? SQL_C_USHORT : SQL_C_ULONG)
#endif

#ifndef SQL_C_BLOB
    #ifdef SQL_LONGVARBINARY
        #define SQL_C_BLOB SQL_LONGVARBINARY
    #elif SQL_VARBINARY
        #define SQL_C_BLOB SQL_VARBINARY
    #endif
#endif
/*
#ifndef TRUE
#define TRUE true
#endif

#ifndef FALSE
#define FALSE false
#endif
*/
const int wxDB_PATH_MAX                 = 254;

WXDLLEXPORT_DATA(extern wxChar const *) SQL_LOG_FILENAME;
WXDLLEXPORT_DATA(extern wxChar const *) SQL_CATALOG_FILENAME;

// Database Globals
const int DB_TYPE_NAME_LEN            = 40;
const int DB_MAX_STATEMENT_LEN        = 4096;
const int DB_MAX_WHERE_CLAUSE_LEN     = 2048;
const int DB_MAX_ERROR_MSG_LEN        = 512;
const int DB_MAX_ERROR_HISTORY        = 5;
const int DB_MAX_TABLE_NAME_LEN       = 128;
const int DB_MAX_COLUMN_NAME_LEN      = 128;

const int DB_DATA_TYPE_VARCHAR        = 1;
const int DB_DATA_TYPE_INTEGER        = 2;
const int DB_DATA_TYPE_FLOAT          = 3;
const int DB_DATA_TYPE_DATE           = 4;
const int DB_DATA_TYPE_BLOB           = 5;

const int DB_SELECT_KEYFIELDS         = 1;
const int DB_SELECT_WHERE             = 2;
const int DB_SELECT_MATCHING          = 3;
const int DB_SELECT_STATEMENT         = 4;

const int DB_UPD_KEYFIELDS            = 1;
const int DB_UPD_WHERE                = 2;

const int DB_DEL_KEYFIELDS            = 1;
const int DB_DEL_WHERE                = 2;
const int DB_DEL_MATCHING             = 3;

const int DB_WHERE_KEYFIELDS          = 1;
const int DB_WHERE_MATCHING           = 2;

const int DB_GRANT_SELECT             = 1;
const int DB_GRANT_INSERT             = 2;
const int DB_GRANT_UPDATE             = 4;
const int DB_GRANT_DELETE             = 8;
const int DB_GRANT_ALL                = DB_GRANT_SELECT | DB_GRANT_INSERT | DB_GRANT_UPDATE | DB_GRANT_DELETE;

// ODBC Error codes (derived from ODBC SqlState codes)
enum wxODBC_ERRORS
{
    DB_FAILURE                        = 0,
    DB_SUCCESS                        = 1,
    DB_ERR_NOT_IN_USE,
    DB_ERR_GENERAL_WARNING,                            // SqlState = '01000'
    DB_ERR_DISCONNECT_ERROR,                           // SqlState = '01002'
    DB_ERR_DATA_TRUNCATED,                             // SqlState = '01004'
    DB_ERR_PRIV_NOT_REVOKED,                           // SqlState = '01006'
    DB_ERR_INVALID_CONN_STR_ATTR,                      // SqlState = '01S00'
    DB_ERR_ERROR_IN_ROW,                               // SqlState = '01S01'
    DB_ERR_OPTION_VALUE_CHANGED,                       // SqlState = '01S02'
    DB_ERR_NO_ROWS_UPD_OR_DEL,                         // SqlState = '01S03'
    DB_ERR_MULTI_ROWS_UPD_OR_DEL,                      // SqlState = '01S04'
    DB_ERR_WRONG_NO_OF_PARAMS,                         // SqlState = '07001'
    DB_ERR_DATA_TYPE_ATTR_VIOL,                        // SqlState = '07006'
    DB_ERR_UNABLE_TO_CONNECT,                          // SqlState = '08001'
    DB_ERR_CONNECTION_IN_USE,                          // SqlState = '08002'
    DB_ERR_CONNECTION_NOT_OPEN,                        // SqlState = '08003'
    DB_ERR_REJECTED_CONNECTION,                        // SqlState = '08004'
    DB_ERR_CONN_FAIL_IN_TRANS,                         // SqlState = '08007'
    DB_ERR_COMM_LINK_FAILURE,                          // SqlState = '08S01'
    DB_ERR_INSERT_VALUE_LIST_MISMATCH,                 // SqlState = '21S01'
    DB_ERR_DERIVED_TABLE_MISMATCH,                     // SqlState = '21S02'
    DB_ERR_STRING_RIGHT_TRUNC,                         // SqlState = '22001'
    DB_ERR_NUMERIC_VALUE_OUT_OF_RNG,                   // SqlState = '22003'
    DB_ERR_ERROR_IN_ASSIGNMENT,                        // SqlState = '22005'
    DB_ERR_DATETIME_FLD_OVERFLOW,                      // SqlState = '22008'
    DB_ERR_DIVIDE_BY_ZERO,                             // SqlState = '22012'
    DB_ERR_STR_DATA_LENGTH_MISMATCH,                   // SqlState = '22026'
    DB_ERR_INTEGRITY_CONSTRAINT_VIOL,                  // SqlState = '23000'
    DB_ERR_INVALID_CURSOR_STATE,                       // SqlState = '24000'
    DB_ERR_INVALID_TRANS_STATE,                        // SqlState = '25000'
    DB_ERR_INVALID_AUTH_SPEC,                          // SqlState = '28000'
    DB_ERR_INVALID_CURSOR_NAME,                        // SqlState = '34000'
    DB_ERR_SYNTAX_ERROR_OR_ACCESS_VIOL,                // SqlState = '37000'
    DB_ERR_DUPLICATE_CURSOR_NAME,                      // SqlState = '3C000'
    DB_ERR_SERIALIZATION_FAILURE,                      // SqlState = '40001'
    DB_ERR_SYNTAX_ERROR_OR_ACCESS_VIOL2,               // SqlState = '42000'
    DB_ERR_OPERATION_ABORTED,                          // SqlState = '70100'
    DB_ERR_UNSUPPORTED_FUNCTION,                       // SqlState = 'IM001'
    DB_ERR_NO_DATA_SOURCE,                             // SqlState = 'IM002'
    DB_ERR_DRIVER_LOAD_ERROR,                          // SqlState = 'IM003'
    DB_ERR_SQLALLOCENV_FAILED,                         // SqlState = 'IM004'
    DB_ERR_SQLALLOCCONNECT_FAILED,                     // SqlState = 'IM005'
    DB_ERR_SQLSETCONNECTOPTION_FAILED,                 // SqlState = 'IM006'
    DB_ERR_NO_DATA_SOURCE_DLG_PROHIB,                  // SqlState = 'IM007'
    DB_ERR_DIALOG_FAILED,                              // SqlState = 'IM008'
    DB_ERR_UNABLE_TO_LOAD_TRANSLATION_DLL,             // SqlState = 'IM009'
    DB_ERR_DATA_SOURCE_NAME_TOO_LONG,                  // SqlState = 'IM010'
    DB_ERR_DRIVER_NAME_TOO_LONG,                       // SqlState = 'IM011'
    DB_ERR_DRIVER_KEYWORD_SYNTAX_ERROR,                // SqlState = 'IM012'
    DB_ERR_TRACE_FILE_ERROR,                           // SqlState = 'IM013'
    DB_ERR_TABLE_OR_VIEW_ALREADY_EXISTS,               // SqlState = 'S0001'
    DB_ERR_TABLE_NOT_FOUND,                            // SqlState = 'S0002'
    DB_ERR_INDEX_ALREADY_EXISTS,                       // SqlState = 'S0011'
    DB_ERR_INDEX_NOT_FOUND,                            // SqlState = 'S0012'
    DB_ERR_COLUMN_ALREADY_EXISTS,                      // SqlState = 'S0021'
    DB_ERR_COLUMN_NOT_FOUND,                           // SqlState = 'S0022'
    DB_ERR_NO_DEFAULT_FOR_COLUMN,                      // SqlState = 'S0023'
    DB_ERR_GENERAL_ERROR,                              // SqlState = 'S1000'
    DB_ERR_MEMORY_ALLOCATION_FAILURE,                  // SqlState = 'S1001'
    DB_ERR_INVALID_COLUMN_NUMBER,                      // SqlState = 'S1002'
    DB_ERR_PROGRAM_TYPE_OUT_OF_RANGE,                  // SqlState = 'S1003'
    DB_ERR_SQL_DATA_TYPE_OUT_OF_RANGE,                 // SqlState = 'S1004'
    DB_ERR_OPERATION_CANCELLED,                        // SqlState = 'S1008'
    DB_ERR_INVALID_ARGUMENT_VALUE,                     // SqlState = 'S1009'
    DB_ERR_FUNCTION_SEQUENCE_ERROR,                    // SqlState = 'S1010'
    DB_ERR_OPERATION_INVALID_AT_THIS_TIME,             // SqlState = 'S1011'
    DB_ERR_INVALID_TRANS_OPERATION_CODE,               // SqlState = 'S1012'
    DB_ERR_NO_CURSOR_NAME_AVAIL,                       // SqlState = 'S1015'
    DB_ERR_INVALID_STR_OR_BUF_LEN,                     // SqlState = 'S1090'
    DB_ERR_DESCRIPTOR_TYPE_OUT_OF_RANGE,               // SqlState = 'S1091'
    DB_ERR_OPTION_TYPE_OUT_OF_RANGE,                   // SqlState = 'S1092'
    DB_ERR_INVALID_PARAM_NO,                           // SqlState = 'S1093'
    DB_ERR_INVALID_SCALE_VALUE,                        // SqlState = 'S1094'
    DB_ERR_FUNCTION_TYPE_OUT_OF_RANGE,                 // SqlState = 'S1095'
    DB_ERR_INF_TYPE_OUT_OF_RANGE,                      // SqlState = 'S1096'
    DB_ERR_COLUMN_TYPE_OUT_OF_RANGE,                   // SqlState = 'S1097'
    DB_ERR_SCOPE_TYPE_OUT_OF_RANGE,                    // SqlState = 'S1098'
    DB_ERR_NULLABLE_TYPE_OUT_OF_RANGE,                 // SqlState = 'S1099'
    DB_ERR_UNIQUENESS_OPTION_TYPE_OUT_OF_RANGE,        // SqlState = 'S1100'
    DB_ERR_ACCURACY_OPTION_TYPE_OUT_OF_RANGE,          // SqlState = 'S1101'
    DB_ERR_DIRECTION_OPTION_OUT_OF_RANGE,              // SqlState = 'S1103'
    DB_ERR_INVALID_PRECISION_VALUE,                    // SqlState = 'S1104'
    DB_ERR_INVALID_PARAM_TYPE,                         // SqlState = 'S1105'
    DB_ERR_FETCH_TYPE_OUT_OF_RANGE,                    // SqlState = 'S1106'
    DB_ERR_ROW_VALUE_OUT_OF_RANGE,                     // SqlState = 'S1107'
    DB_ERR_CONCURRENCY_OPTION_OUT_OF_RANGE,            // SqlState = 'S1108'
    DB_ERR_INVALID_CURSOR_POSITION,                    // SqlState = 'S1109'
    DB_ERR_INVALID_DRIVER_COMPLETION,                  // SqlState = 'S1110'

⌨️ 快捷键说明

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