亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? odbc.h

?? 浙江大學(xué)的悟空嵌入式系統(tǒng)模擬器
?? H
字號(hào):
/////////////////////////////////////////////////////////////////////////////
// Name:        odbc.h
// Purpose:     ODBC classes
// Author:      Olaf Klein, Patrick Halke, Julian Smart
// Modified by:
// Created:     01/02/97
// RCS-ID:      $Id: odbc.h,v 1.1 2005/03/16 06:49:20 kehc Exp $
// Copyright:   (c) Julian Smart and Markus Holzem
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

#include "wx/setup.h"

#if wxUSE_ODBC

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

#ifndef _WX_ODBCH__
#define _WX_ODBCH__

//#ifdef __WXMSW__
//#include <windows.h>
//#endif


#ifdef __UNIX__
extern "C"
{
    #include "wx/isql.h"
    #include "wx/isqlext.h"

    typedef float   SFLOAT;
    typedef double  SDOUBLE;

    #define ULONG UDWORD
    #define SQL_SQLSTATE_SIZE 5
}
#else // !Unix
    #include <sqlext.h>
#endif // Unix/!Unix

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

typedef RETCODE wxRETCODE;

// Recordset open types
#define wxOPEN_TYPE_DYNASET         1
#define wxOPEN_TYPE_SNAPSHOT        2
#define wxOPEN_TYPE_FORWARD_ONLY    3

// Recordset open options
#define wxOPTION_DEFAULT            1
#define wxOPTION_APPEND_ONLY        2
#define wxOPTION_READ_ONLY          3

// Data types
class WXDLLEXPORT wxRecordSet;

class WXDLLEXPORT wxDatabase: public wxObject
{
  DECLARE_DYNAMIC_CLASS(wxDatabase)
 protected:
  static HENV hEnv;
  static int refCount;

  HDBC hDBC;
  char* username;
  char* password;
  char* datasource;
  char* dbname;
  char* connectstring;
  bool isOpen;

  // error-handling variables
  wxRETCODE retcode;
  char sqlstate[SQL_SQLSTATE_SIZE+1];  // error class and subclass
  char errmsg[SQL_MAX_MESSAGE_LENGTH]; // error message
  long nat_err;                        // error number by ODBC driver
  bool err_occured;

  wxList recordSets; // Record sets: Added by JACS

 public:
  wxDatabase();
  ~wxDatabase();

  bool Open(char *, bool exclusive =FALSE, bool readOnly =TRUE, char *username ="ODBC", char *password ="");
  bool Close();

  // Cleanup operations, added by JACS
  void DeleteRecordSets(void); // Called when the database is deleted
  void ResetRecordSets(void); // Required if the database is closed
  inline wxList& GetRecordSets(void) { return recordSets; }

  inline char *GetUsername(void) { return username; }
  inline char *GetPassword(void) { return password; }
  inline char *GetDataSource(void) { return datasource; }
  inline bool IsOpen(void) { return isOpen; }
  inline wxRETCODE GetErrorCode(void) { return retcode; }
  inline HDBC GetHDBC(void) { return hDBC; }
  inline HENV GetHENV(void) { return hEnv; }

  void SetPassword(char *s);
  void SetUsername(char *s);
  void SetDataSource(char *s);

  // Database attributes
  char *GetDatabaseName();
  bool CanUpdate();
  bool CanTransact();
  bool InWaitForDataSource();
  void SetLoginTimeout(long seconds);
  void SetQueryTimeout(long seconds);
  void SetSynchronousMode(bool synchronous);

  // Database operations
  bool BeginTrans();
  bool CommitTrans();
  bool RollbackTrans();
  void Cancel();

  // Error handling
  bool ErrorOccured();
  char* GetErrorMessage();
  long  GetErrorNumber();
  char* GetErrorClass();
  inline void ErrorSnapshot(HSTMT =SQL_NULL_HSTMT);

  // Overridables
  virtual void OnSetOptions(wxRecordSet *recordSet);
  virtual void OnWaitForDataSource(bool stillExecuting);

  bool GetInfo(long infoType, long *buf);
  bool GetInfo(long infoType, char *buf, int bufSize = -1);

  // implementation = TRUE means get the DLL version.
  // Otherwise, returns header file version.
  wxString GetODBCVersionString(bool implementation = TRUE);
  float GetODBCVersionFloat(bool implementation = TRUE);
};

// Represents a data row
class WXDLLEXPORT wxQueryField: public wxObject
{
  // JACS
  DECLARE_DYNAMIC_CLASS(wxQueryField)
 private:
  void *data;
  short type;
  long size;
  bool dirty;

  bool AllocData();

  public:
  wxQueryField();
  ~wxQueryField();

  bool SetData(void*, long);
  void SetDirty(bool =TRUE);
  void ClearData();
  void SetType(short);
  void SetSize(long);

  void* GetData();
  short GetType();
  long GetSize();

  bool IsDirty();
};

// Represents a column description
class WXDLLEXPORT wxQueryCol: public wxObject
{
  // JACS
  DECLARE_DYNAMIC_CLASS(wxQueryCol)
 private:
  short type;
  char *name;
  bool nullable;
  long varsize;
  void* var;

  public:
  wxList fields;

  wxQueryCol();
  ~wxQueryCol();

  void* BindVar(void*, long);
  void FillVar(int);
  void AppendField(void*, long);
  bool SetData(int, void*, long);
  void SetName(char*);
  void SetNullable(bool);
  void SetFieldDirty(int, bool =TRUE);
  void SetType(short);

  char* GetName();
  short GetType();
  bool IsNullable();
  void* GetData(int);
  long GetSize(int);

  bool IsFieldDirty(int);
};

class WXDLLEXPORT wxRecordSet: public wxObject
{
  // JACS
  DECLARE_DYNAMIC_CLASS(wxRecordSet)
 private:
  int cursor;
  int type;
  int options;

  protected:
  HSTMT hStmt;
  int nFields;
  int nParams;
  int nRecords;
  short nCols;
  char *recordFilter;
  char *sortString;
  char *defaultSQL;
  char* tablename;
  wxDatabase *parentdb;
  wxRETCODE retcode;
  wxList cols;
  wxList fetchbuf;

  void FillVars(int);

  public:
  // JACS gave parent a default value for benefit of IMPLEMENT_DYNAMIC_CLASS
  wxRecordSet(wxDatabase *parent = NULL,
              int = wxOPEN_TYPE_DYNASET,
              int = wxOPTION_DEFAULT);
  ~wxRecordSet();

  // My own, lower-level functions.
  bool BeginQuery(int openType, char *sql = NULL, int options = wxOPTION_DEFAULT);
  bool EndQuery();
  bool Query(char* columns, char* table =NULL, char *filter =NULL);

  // Attributes
  inline int GetNumberFields(void) { return nFields; }
  inline int GetNumberParams(void) { return nParams; }
  long GetNumberRecords();
  long GetNumberCols();
  inline char *GetFilter(void) { return recordFilter; }
  inline char *GetSortString(void) { return sortString; }
  inline wxDatabase *GetDatabase(void) { return parentdb; }
  inline wxRETCODE GetErrorCode(void) { return retcode; }
  bool CanAppend();
  bool CanRestart();
  bool CanScroll();
  bool CanTransact();
  bool CanUpdate();
  long GetCurrentRecord();
  bool RecordCountFinal();
  bool GetResultSet();
  bool ExecuteSQL(char*);
  bool GetTables();
  bool GetColumns(char* =NULL);
  bool GetPrimaryKeys(char* =NULL);
  bool GetForeignKeys(char* , char * );
  char *GetTableName();
  void SetTableName(char*);
  char *GetSQL();
  bool IsOpen();
  bool IsBOF();
  bool IsEOF();
  bool IsDeleted();

  bool GetFieldData(int colPos, int dataType, void *dataPtr);
  bool GetFieldData(const char*, int dataType, void *dataPtr);
  void* GetFieldDataPtr(int, int);
  void* GetFieldDataPtr(const char*, int);
  char* GetColName(int);
  short GetColType(int);
  short GetColType(const char*);
  void* BindVar(int, void*, long);
  void* BindVar(const char*, void*, long);

  void SetType(int);
  int GetType();
  void SetOptions(int);
  int GetOptions();

  // Update operations
  void AddNew();
  bool Delete();
  void Edit();
  bool Update();

  // Record navigation
  virtual bool Move(long rows);
  virtual bool MoveFirst();
  virtual bool MoveLast();
  virtual bool MoveNext();
  virtual bool MovePrev();
  virtual bool GoTo(long);

  // Others
  bool GetDataSources();

  // Associate a column name/position with a data location
  //   bool BindColumn(int colPos, int dataType, void *dataPtr);

  void Cancel();
  bool IsFieldDirty(int);
  bool IsFieldDirty(const char*);
  bool IsFieldNull(int);
  bool IsFieldNull(const char*);
  bool IsColNullable(int);
  bool IsColNullable(const char*);
  virtual bool Requery();
  virtual void SetFieldDirty(int, bool dirty = TRUE);
  virtual void SetFieldDirty(const char*, bool dirty = TRUE);
  void SetFieldNull(void *p, bool isNull = TRUE);

  // Overridables
  virtual char *GetDefaultConnect();
  virtual char *GetDefaultSQL();

  // Internal

  // Build SQL query from column specification
  bool ConstructDefaultSQL();
  void SetDefaultSQL(char *s);
  bool ReleaseHandle(void); // Added JACS
};

#endif

#endif  // wxUSE_ODBC

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本久道久久综合中文字幕| 国产精品亚洲а∨天堂免在线| 国产91高潮流白浆在线麻豆 | 三级欧美在线一区| 国产v日产∨综合v精品视频| 911精品产国品一二三产区| 国产精品―色哟哟| 经典三级一区二区| 欧美巨大另类极品videosbest | 一区二区三区四区亚洲| 国产乱妇无码大片在线观看| 欧美日韩一区二区三区在线| 国产精品久久久久久久午夜片| 久久精品国产第一区二区三区| 欧美午夜免费电影| 亚洲三级小视频| 丁香婷婷综合网| 精品国产免费一区二区三区香蕉| 亚洲chinese男男1069| 色婷婷av一区二区三区gif| 国产欧美一区二区三区鸳鸯浴| 久久精品99国产精品| 欧美日韩激情一区二区三区| 亚洲精品一二三| 北条麻妃一区二区三区| 久久精品一区二区三区不卡 | 亚洲国产日韩一区二区| av不卡在线播放| 国产精品二三区| 成人性生交大片免费看中文网站| 2欧美一区二区三区在线观看视频| 日韩精品国产欧美| 欧美日韩久久久| 婷婷久久综合九色综合伊人色| 91国内精品野花午夜精品| 亚洲欧洲av一区二区三区久久| 成人手机电影网| 国产精品视频一区二区三区不卡| 国产综合久久久久久鬼色| 欧美电影免费观看高清完整版在线| 日韩高清不卡在线| 欧美一区二区三区在线观看| 日韩精品91亚洲二区在线观看 | 成人美女视频在线看| 久久亚洲免费视频| 国产一区三区三区| 精品国产欧美一区二区| 国产一区二区三区四区五区美女 | 成人免费在线播放视频| 91在线porny国产在线看| 亚洲三级小视频| 91国产视频在线观看| 亚洲午夜一二三区视频| 欧美美女bb生活片| 蜜臀av性久久久久av蜜臀妖精| 日韩午夜av一区| 国内精品嫩模私拍在线| 久久精品欧美一区二区三区麻豆| 国产成a人无v码亚洲福利| 国产精品视频一二三| 色婷婷综合在线| 亚洲r级在线视频| 精品久久久网站| 国产成人av网站| 亚洲狼人国产精品| 欧美久久一二三四区| 激情深爱一区二区| 国产精品美女久久久久久久网站| 色综合久久久久综合体桃花网| 亚洲综合久久久久| 日韩视频免费观看高清完整版在线观看| 久久精品久久精品| 中文字幕在线观看一区| 欧美三级韩国三级日本三斤 | 亚洲色图都市小说| 欧美日韩日本视频| 国内不卡的二区三区中文字幕| 欧美韩国日本综合| 欧美中文字幕一区二区三区亚洲 | 中文字幕一区在线观看视频| 欧美色倩网站大全免费| 久久国产三级精品| 中文字幕一区二区三区在线观看 | 欧洲国内综合视频| 久久99久久99| 亚洲欧洲综合另类在线| 欧美一区二区三区男人的天堂| 国产精品一区二区三区乱码| 亚洲日本va在线观看| 欧美一区二区在线看| 成人av在线影院| 日韩电影一区二区三区| 欧美国产日韩在线观看| 精品视频一区二区不卡| 国产精品自拍网站| 亚洲第一在线综合网站| 久久奇米777| 欧美三区在线视频| 风间由美一区二区av101| 亚洲综合自拍偷拍| 久久久久国产精品厨房| 欧美人妇做爰xxxⅹ性高电影| 国产盗摄精品一区二区三区在线| 亚洲成人一二三| 欧美极品少妇xxxxⅹ高跟鞋| 欧美精品成人一区二区三区四区| 成人免费视频视频在线观看免费| 婷婷六月综合网| 亚洲美女屁股眼交| 国产三级一区二区| 欧美精品免费视频| 91香蕉视频mp4| 国产一区二区毛片| 全国精品久久少妇| 亚洲一区二区在线视频| 中文字幕乱码久久午夜不卡 | 日韩午夜在线观看视频| 色94色欧美sute亚洲线路一久| 韩国v欧美v亚洲v日本v| 亚洲成人三级小说| 亚洲男人的天堂一区二区 | 欧美一区日韩一区| 欧美专区日韩专区| 91免费精品国自产拍在线不卡| 国产在线一区二区| 美女看a上一区| 亚洲va天堂va国产va久| 亚洲欧洲精品天堂一级| 国产日韩欧美电影| 欧美精品一区二区不卡| 欧美美女激情18p| 欧美日韩日日夜夜| 在线免费亚洲电影| 91视频国产观看| 成人毛片在线观看| 成人小视频在线观看| 国产在线视频一区二区| 麻豆视频一区二区| 日本成人在线看| 秋霞午夜av一区二区三区| 亚洲国产精品久久久久婷婷884| 亚洲日本中文字幕区| 国产精品日韩精品欧美在线| 久久久三级国产网站| 精品福利在线导航| 欧美电影免费观看完整版| 欧美一区二区高清| 91精品蜜臀在线一区尤物| 欧美性一级生活| 欧美亚洲综合另类| 欧美午夜精品理论片a级按摩| 91捆绑美女网站| 色噜噜狠狠成人网p站| 色哟哟精品一区| 欧洲精品一区二区| 欧美日韩专区在线| 欧美日韩国产一二三| 69堂国产成人免费视频| 91精品综合久久久久久| 91精品国产欧美一区二区| 欧美丰满少妇xxxbbb| 欧美老肥妇做.爰bbww视频| 欧美日韩久久久一区| 91精品久久久久久蜜臀| 日韩一区二区三区高清免费看看| 欧美一区二区三区视频免费| 日韩精品专区在线| 久久亚洲精品国产精品紫薇| 国产喷白浆一区二区三区| 亚洲国产激情av| 亚洲精品国产无天堂网2021| 一区二区三区四区亚洲| 丝袜美腿亚洲色图| 美女mm1313爽爽久久久蜜臀| 久久福利视频一区二区| 国产精品亚洲一区二区三区在线 | 国产精品一级片| 成人白浆超碰人人人人| 91亚洲精品久久久蜜桃| 欧美日韩在线播放三区四区| 日韩一区二区麻豆国产| 久久亚洲精精品中文字幕早川悠里| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品国产三级国产普通话99 | 国产精品久久久久毛片软件| 一区二区在线观看av| 五月天网站亚洲| 韩国精品在线观看| 国产成人高清在线| 91电影在线观看| 欧美年轻男男videosbes| 国产精品国产三级国产有无不卡| 中文字幕日韩精品一区 | 欧美制服丝袜第一页| 欧美日韩国产高清一区二区三区 | 天天综合天天做天天综合| 久久99热狠狠色一区二区| 成人免费视频视频在线观看免费| 色婷婷av一区二区三区软件| 欧美一级一区二区|