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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tclsqlite.c

?? sqlite 3.3.8 支持加密的版本
?? C
?? 第 1 頁 / 共 5 頁
字號:
        pDb->zNull = 0;
      }
    }
    Tcl_SetObjResult(interp, dbTextToObj(pDb->zNull));
    break;
  }

  /*
  **     $db last_insert_rowid 
  **
  ** Return an integer which is the ROWID for the most recent insert.
  */
  case DB_LAST_INSERT_ROWID: {
    Tcl_Obj *pResult;
    Tcl_WideInt rowid;
    if( objc!=2 ){
      Tcl_WrongNumArgs(interp, 2, objv, "");
      return TCL_ERROR;
    }
    rowid = sqlite3_last_insert_rowid(pDb->db);
    pResult = Tcl_GetObjResult(interp);
    Tcl_SetWideIntObj(pResult, rowid);
    break;
  }

  /*
  ** The DB_ONECOLUMN method is implemented together with DB_EVAL.
  */

  /*    $db progress ?N CALLBACK?
  ** 
  ** Invoke the given callback every N virtual machine opcodes while executing
  ** queries.
  */
  case DB_PROGRESS: {
    if( objc==2 ){
      if( pDb->zProgress ){
        Tcl_AppendResult(interp, pDb->zProgress, 0);
      }
    }else if( objc==4 ){
      char *zProgress;
      int len;
      int N;
      if( TCL_OK!=Tcl_GetIntFromObj(interp, objv[2], &N) ){
	return TCL_ERROR;
      };
      if( pDb->zProgress ){
        Tcl_Free(pDb->zProgress);
      }
      zProgress = Tcl_GetStringFromObj(objv[3], &len);
      if( zProgress && len>0 ){
        pDb->zProgress = Tcl_Alloc( len + 1 );
        strcpy(pDb->zProgress, zProgress);
      }else{
        pDb->zProgress = 0;
      }
#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
      if( pDb->zProgress ){
        pDb->interp = interp;
        sqlite3_progress_handler(pDb->db, N, DbProgressHandler, pDb);
      }else{
        sqlite3_progress_handler(pDb->db, 0, 0, 0);
      }
#endif
    }else{
      Tcl_WrongNumArgs(interp, 2, objv, "N CALLBACK");
      return TCL_ERROR;
    }
    break;
  }

  /*    $db profile ?CALLBACK?
  **
  ** Make arrangements to invoke the CALLBACK routine after each SQL statement
  ** that has run.  The text of the SQL and the amount of elapse time are
  ** appended to CALLBACK before the script is run.
  */
  case DB_PROFILE: {
    if( objc>3 ){
      Tcl_WrongNumArgs(interp, 2, objv, "?CALLBACK?");
      return TCL_ERROR;
    }else if( objc==2 ){
      if( pDb->zProfile ){
        Tcl_AppendResult(interp, pDb->zProfile, 0);
      }
    }else{
      char *zProfile;
      int len;
      if( pDb->zProfile ){
        Tcl_Free(pDb->zProfile);
      }
      zProfile = Tcl_GetStringFromObj(objv[2], &len);
      if( zProfile && len>0 ){
        pDb->zProfile = Tcl_Alloc( len + 1 );
        strcpy(pDb->zProfile, zProfile);
      }else{
        pDb->zProfile = 0;
      }
#ifndef SQLITE_OMIT_TRACE
      if( pDb->zProfile ){
        pDb->interp = interp;
        sqlite3_profile(pDb->db, DbProfileHandler, pDb);
      }else{
        sqlite3_profile(pDb->db, 0, 0);
      }
#endif
    }
    break;
  }

  /*
  **     $db rekey KEY
  **
  ** Change the encryption key on the currently open database.
  */
  case DB_REKEY: {
    int nKey;
    void *pKey;
    if( objc!=3 ){
      Tcl_WrongNumArgs(interp, 2, objv, "KEY");
      return TCL_ERROR;
    }
    pKey = Tcl_GetByteArrayFromObj(objv[2], &nKey);
#ifdef SQLITE_HAS_CODEC
    rc = sqlite3_rekey(pDb->db, pKey, nKey);
    if( rc ){
      Tcl_AppendResult(interp, sqlite3ErrStr(rc), 0);
      rc = TCL_ERROR;
    }
#endif
    break;
  }

  /*
  **     $db timeout MILLESECONDS
  **
  ** Delay for the number of milliseconds specified when a file is locked.
  */
  case DB_TIMEOUT: {
    int ms;
    if( objc!=3 ){
      Tcl_WrongNumArgs(interp, 2, objv, "MILLISECONDS");
      return TCL_ERROR;
    }
    if( Tcl_GetIntFromObj(interp, objv[2], &ms) ) return TCL_ERROR;
    sqlite3_busy_timeout(pDb->db, ms);
    break;
  }
  
  /*
  **     $db total_changes
  **
  ** Return the number of rows that were modified, inserted, or deleted 
  ** since the database handle was created.
  */
  case DB_TOTAL_CHANGES: {
    Tcl_Obj *pResult;
    if( objc!=2 ){
      Tcl_WrongNumArgs(interp, 2, objv, "");
      return TCL_ERROR;
    }
    pResult = Tcl_GetObjResult(interp);
    Tcl_SetIntObj(pResult, sqlite3_total_changes(pDb->db));
    break;
  }

  /*    $db trace ?CALLBACK?
  **
  ** Make arrangements to invoke the CALLBACK routine for each SQL statement
  ** that is executed.  The text of the SQL is appended to CALLBACK before
  ** it is executed.
  */
  case DB_TRACE: {
    if( objc>3 ){
      Tcl_WrongNumArgs(interp, 2, objv, "?CALLBACK?");
      return TCL_ERROR;
    }else if( objc==2 ){
      if( pDb->zTrace ){
        Tcl_AppendResult(interp, pDb->zTrace, 0);
      }
    }else{
      char *zTrace;
      int len;
      if( pDb->zTrace ){
        Tcl_Free(pDb->zTrace);
      }
      zTrace = Tcl_GetStringFromObj(objv[2], &len);
      if( zTrace && len>0 ){
        pDb->zTrace = Tcl_Alloc( len + 1 );
        strcpy(pDb->zTrace, zTrace);
      }else{
        pDb->zTrace = 0;
      }
#ifndef SQLITE_OMIT_TRACE
      if( pDb->zTrace ){
        pDb->interp = interp;
        sqlite3_trace(pDb->db, DbTraceHandler, pDb);
      }else{
        sqlite3_trace(pDb->db, 0, 0);
      }
#endif
    }
    break;
  }

  /*    $db transaction [-deferred|-immediate|-exclusive] SCRIPT
  **
  ** Start a new transaction (if we are not already in the midst of a
  ** transaction) and execute the TCL script SCRIPT.  After SCRIPT
  ** completes, either commit the transaction or roll it back if SCRIPT
  ** throws an exception.  Or if no new transation was started, do nothing.
  ** pass the exception on up the stack.
  **
  ** This command was inspired by Dave Thomas's talk on Ruby at the
  ** 2005 O'Reilly Open Source Convention (OSCON).
  */
  case DB_TRANSACTION: {
    int inTrans;
    Tcl_Obj *pScript;
    const char *zBegin = "BEGIN";
    if( objc!=3 && objc!=4 ){
      Tcl_WrongNumArgs(interp, 2, objv, "[TYPE] SCRIPT");
      return TCL_ERROR;
    }
    if( objc==3 ){
      pScript = objv[2];
    } else {
      static const char *TTYPE_strs[] = {
        "deferred",   "exclusive",  "immediate", 0
      };
      enum TTYPE_enum {
        TTYPE_DEFERRED, TTYPE_EXCLUSIVE, TTYPE_IMMEDIATE
      };
      int ttype;
      if( Tcl_GetIndexFromObj(interp, objv[2], TTYPE_strs, "transaction type",
                              0, &ttype) ){
        return TCL_ERROR;
      }
      switch( (enum TTYPE_enum)ttype ){
        case TTYPE_DEFERRED:    /* no-op */;                 break;
        case TTYPE_EXCLUSIVE:   zBegin = "BEGIN EXCLUSIVE";  break;
        case TTYPE_IMMEDIATE:   zBegin = "BEGIN IMMEDIATE";  break;
      }
      pScript = objv[3];
    }
    inTrans = !sqlite3_get_autocommit(pDb->db);
    if( !inTrans ){
      (void)sqlite3_exec(pDb->db, zBegin, 0, 0, 0);
    }
    rc = Tcl_EvalObjEx(interp, pScript, 0);
    if( !inTrans ){
      const char *zEnd;
      if( rc==TCL_ERROR ){
        zEnd = "ROLLBACK";
      } else {
        zEnd = "COMMIT";
      }
      (void)sqlite3_exec(pDb->db, zEnd, 0, 0, 0);
    }
    break;
  }

  /*
  **    $db update_hook ?script?
  **    $db rollback_hook ?script?
  */
  case DB_UPDATE_HOOK: 
  case DB_ROLLBACK_HOOK: {

    /* set ppHook to point at pUpdateHook or pRollbackHook, depending on 
    ** whether [$db update_hook] or [$db rollback_hook] was invoked.
    */
    Tcl_Obj **ppHook; 
    if( choice==DB_UPDATE_HOOK ){
      ppHook = &pDb->pUpdateHook;
    }else{
      ppHook = &pDb->pRollbackHook;
    }

    if( objc!=2 && objc!=3 ){
       Tcl_WrongNumArgs(interp, 2, objv, "?SCRIPT?");
       return TCL_ERROR;
    }
    if( *ppHook ){
      Tcl_SetObjResult(interp, *ppHook);
      if( objc==3 ){
        Tcl_DecrRefCount(*ppHook);
        *ppHook = 0;
      }
    }
    if( objc==3 ){
      assert( !(*ppHook) );
      if( Tcl_GetCharLength(objv[2])>0 ){
        *ppHook = objv[2];
        Tcl_IncrRefCount(*ppHook);
      }
    }

    sqlite3_update_hook(pDb->db, (pDb->pUpdateHook?DbUpdateHandler:0), pDb);
    sqlite3_rollback_hook(pDb->db,(pDb->pRollbackHook?DbRollbackHandler:0),pDb);

    break;
  }

  /*    $db version
  **
  ** Return the version string for this database.
  */
  case DB_VERSION: {
    Tcl_SetResult(interp, (char *)sqlite3_libversion(), TCL_STATIC);
    break;
  }


  } /* End of the SWITCH statement */
  return rc;
}

/*
**   sqlite3 DBNAME FILENAME ?MODE? ?-key KEY?
**
** This is the main Tcl command.  When the "sqlite" Tcl command is
** invoked, this routine runs to process that command.
**
** The first argument, DBNAME, is an arbitrary name for a new
** database connection.  This command creates a new command named
** DBNAME that is used to control that connection.  The database
** connection is deleted when the DBNAME command is deleted.
**
** The second argument is the name of the directory that contains
** the sqlite database that is to be accessed.
**
** For testing purposes, we also support the following:
**
**  sqlite3 -encoding
**
**       Return the encoding used by LIKE and GLOB operators.  Choices
**       are UTF-8 and iso8859.
**
**  sqlite3 -version
**
**       Return the version number of the SQLite library.
**
**  sqlite3 -tcl-uses-utf
**
**       Return "1" if compiled with a Tcl uses UTF-8.  Return "0" if
**       not.  Used by tests to make sure the library was compiled 
**       correctly.
*/
static int DbMain(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){
  SqliteDb *p;
  void *pKey = 0;
  int nKey = 0;
  const char *zArg;
  char *zErrMsg;
  const char *zFile;
  Tcl_DString translatedFilename;
  if( objc==2 ){
    zArg = Tcl_GetStringFromObj(objv[1], 0);
    if( strcmp(zArg,"-version")==0 ){
      Tcl_AppendResult(interp,sqlite3_version,0);
      return TCL_OK;
    }
    if( strcmp(zArg,"-has-codec")==0 ){
#ifdef SQLITE_HAS_CODEC
      Tcl_AppendResult(interp,"1",0);
#else
      Tcl_AppendResult(interp,"0",0);
#endif
      return TCL_OK;
    }
    if( strcmp(zArg,"-tcl-uses-utf")==0 ){
#ifdef TCL_UTF_MAX
      Tcl_AppendResult(interp,"1",0);
#else
      Tcl_AppendResult(interp,"0",0);
#endif
      return TCL_OK;
    }
  }
  if( objc==5 || objc==6 ){
    zArg = Tcl_GetStringFromObj(objv[objc-2], 0);
    if( strcmp(zArg,"-key")==0 ){
      pKey = Tcl_GetByteArrayFromObj(objv[objc-1], &nKey);
      objc -= 2;
    }
  }
  if( objc!=3 && objc!=4 ){
    Tcl_WrongNumArgs(interp, 1, objv, 
#ifdef SQLITE_HAS_CODEC
      "HANDLE FILENAME ?-key CODEC-KEY?"
#else
      "HANDLE FILENAME ?MODE?"
#endif
    );
    return TCL_ERROR;
  }
  zErrMsg = 0;
  p = (SqliteDb*)Tcl_Alloc( sizeof(*p) );
  if( p==0 ){
    Tcl_SetResult(interp, "malloc failed", TCL_STATIC);
    return TCL_ERROR;
  }
  memset(p, 0, sizeof(*p));
  zFile = Tcl_GetStringFromObj(objv[2], 0);
  zFile = Tcl_TranslateFileName(interp, zFile, &translatedFilename);
  sqlite3_open(zFile, &p->db);
  Tcl_DStringFree(&translatedFilename);
  if( SQLITE_OK!=sqlite3_errcode(p->db) ){
  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级精品视频| 日韩精品一级中文字幕精品视频免费观看 | 国产人久久人人人人爽| 国产精品久久久久久久岛一牛影视| 国产欧美精品一区| 日本在线观看不卡视频| 一本到一区二区三区| 国产亲近乱来精品视频| 热久久国产精品| 欧美伦理影视网| 国产精品久99| 国产黄色91视频| 精品国产乱码久久久久久图片| 亚洲午夜影视影院在线观看| 不卡一区在线观看| 欧美国产禁国产网站cc| 国产自产高清不卡| 日韩免费看的电影| 久久精品国产澳门| 欧美一区二区三区人| 亚洲综合一二区| 一本一道波多野结衣一区二区| 亚洲国产成人在线| 成人午夜激情视频| 国产精品系列在线| 成人午夜av电影| 看片网站欧美日韩| 51久久夜色精品国产麻豆| 亚洲成国产人片在线观看| 欧美性三三影院| 亚洲国产综合在线| 在线视频国内一区二区| 一个色在线综合| 日本一区二区成人在线| 久久99国产精品成人| 欧美大片国产精品| 国内精品久久久久影院薰衣草| 精品国产污污免费网站入口 | 亚洲精品成人少妇| 色综合久久久久网| 亚洲国产美国国产综合一区二区| 色哟哟一区二区| 婷婷亚洲久悠悠色悠在线播放| 欧美喷水一区二区| 美女一区二区视频| 欧美激情一区二区三区四区| www.成人在线| 亚洲妇熟xx妇色黄| 精品国产免费久久| av午夜一区麻豆| 天天综合天天综合色| 日韩欧美一区电影| 成人av在线看| 五月激情综合色| 精品黑人一区二区三区久久| 成人美女在线视频| 亚洲国产精品一区二区www在线| 欧美精品日韩精品| 国产一区二区三区久久悠悠色av| 国产精品久久久久久久岛一牛影视 | 毛片不卡一区二区| 久久精品亚洲乱码伦伦中文| 99re视频精品| 美女视频黄 久久| 亚洲欧洲韩国日本视频| 91亚洲大成网污www| 蜜臀av一级做a爰片久久| 中文字幕av不卡| 欧美一级精品大片| av网站免费线看精品| 石原莉奈在线亚洲二区| 中文成人综合网| 91精品在线一区二区| 不卡一二三区首页| 精品一区二区久久| 亚洲一区在线视频观看| 欧美国产日韩一二三区| 欧美区视频在线观看| 97国产一区二区| 精品一区二区三区影院在线午夜| 亚洲欧美激情小说另类| 精品少妇一区二区三区视频免付费| gogogo免费视频观看亚洲一| 美洲天堂一区二卡三卡四卡视频| 亚洲人成影院在线观看| 久久青草欧美一区二区三区| 欧美日韩你懂的| av亚洲精华国产精华精| 国产一区二区网址| 婷婷国产v国产偷v亚洲高清| 亚洲免费观看高清完整版在线观看| 2021久久国产精品不只是精品| 在线电影国产精品| 在线欧美日韩精品| jizzjizzjizz欧美| 丁香婷婷综合五月| 激情深爱一区二区| 蜜臀av一区二区| 秋霞午夜鲁丝一区二区老狼| 亚洲一区自拍偷拍| 亚洲综合免费观看高清在线观看| 中文字幕日韩一区| 国产精品久久久久永久免费观看 | 亚洲一区在线视频观看| 国产精品素人视频| 国产午夜精品一区二区三区四区| 91精品国产综合久久久蜜臀粉嫩| 欧洲一区在线电影| 欧日韩精品视频| 色婷婷av久久久久久久| 波多野结衣亚洲一区| 成人免费视频网站在线观看| 国产精品99久久久久久久女警| 久久精品久久综合| 久久99国产精品麻豆| 国产老女人精品毛片久久| 韩国视频一区二区| 国产精品一区2区| 不卡电影一区二区三区| www.亚洲在线| 在线视频一区二区三区| 欧美性色aⅴ视频一区日韩精品| 欧美日韩在线三区| 日韩亚洲欧美一区二区三区| 精品国产电影一区二区| 国产日产亚洲精品系列| 中文字幕中文字幕在线一区| 亚洲精品视频一区| 日韩精品一二三区| 国产一区二区毛片| 成人免费电影视频| 91蝌蚪porny| 欧美老女人在线| 欧美变态口味重另类| 国产精品三级视频| 亚洲国产一区二区三区青草影视| 日韩二区在线观看| 国产精品99久久久久久久vr| 色婷婷国产精品综合在线观看| 欧美精品在线观看播放| 日韩精品一区二区三区在线播放| 日本一区二区在线不卡| 亚洲激情在线播放| 精品一区二区在线视频| 91丨九色丨尤物| 日韩视频一区二区在线观看| 国产精品视频一区二区三区不卡| 亚洲最大的成人av| 国产一区二区三区不卡在线观看 | 国产精品无遮挡| 亚洲电影激情视频网站| 国内精品伊人久久久久av影院| 99riav一区二区三区| 日韩无一区二区| 亚洲精品乱码久久久久久久久| 国产综合色视频| 欧美性猛片xxxx免费看久爱| 久久久91精品国产一区二区精品| 亚洲综合色区另类av| 国产激情91久久精品导航| 欧美欧美欧美欧美| 亚洲欧美偷拍三级| 激情综合网av| 欧美日韩成人综合| 国产农村妇女毛片精品久久麻豆 | 亚洲国产一二三| 成人av中文字幕| 欧美本精品男人aⅴ天堂| 一区二区三区日韩欧美精品| 极品少妇一区二区| 91精品国模一区二区三区| 国产精品毛片无遮挡高清| 精品一区二区影视| 欧美福利电影网| 一区二区高清免费观看影视大全 | 久久成人av少妇免费| 欧美性色欧美a在线播放| 国产精品久久久爽爽爽麻豆色哟哟 | 欧美一区二区视频在线观看2022| 国产亚洲一区二区在线观看| 日韩黄色小视频| 欧美日韩一区久久| 樱花影视一区二区| 色综合天天综合网国产成人综合天| 久久青草国产手机看片福利盒子| 青青国产91久久久久久| 9191成人精品久久| 亚洲成人免费在线观看| 欧美中文一区二区三区| √…a在线天堂一区| 成人av第一页| 国产精品免费av| 成人一区二区视频| 亚洲国产成人在线| 高清av一区二区| 国产精品久久久久久久久动漫| 大桥未久av一区二区三区中文| 国产欧美日韩在线看| 国产成人av电影在线| 国产精品污污网站在线观看|