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

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

?? test4.c

?? 新版輕量級嵌入式數據庫
?? C
?? 第 1 頁 / 共 2 頁
字號:
){  int i;  const char *zName;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID", 0);    return TCL_ERROR;  }  i = parse_thread_id(interp, argv[1]);  if( i<0 ) return TCL_ERROR;  if( !threadset[i].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[i]);  switch( threadset[i].rc ){    case SQLITE_OK:         zName = "SQLITE_OK";          break;    case SQLITE_ERROR:      zName = "SQLITE_ERROR";       break;    case SQLITE_PERM:       zName = "SQLITE_PERM";        break;    case SQLITE_ABORT:      zName = "SQLITE_ABORT";       break;    case SQLITE_BUSY:       zName = "SQLITE_BUSY";        break;    case SQLITE_LOCKED:     zName = "SQLITE_LOCKED";      break;    case SQLITE_NOMEM:      zName = "SQLITE_NOMEM";       break;    case SQLITE_READONLY:   zName = "SQLITE_READONLY";    break;    case SQLITE_INTERRUPT:  zName = "SQLITE_INTERRUPT";   break;    case SQLITE_IOERR:      zName = "SQLITE_IOERR";       break;    case SQLITE_CORRUPT:    zName = "SQLITE_CORRUPT";     break;    case SQLITE_FULL:       zName = "SQLITE_FULL";        break;    case SQLITE_CANTOPEN:   zName = "SQLITE_CANTOPEN";    break;    case SQLITE_PROTOCOL:   zName = "SQLITE_PROTOCOL";    break;    case SQLITE_EMPTY:      zName = "SQLITE_EMPTY";       break;    case SQLITE_SCHEMA:     zName = "SQLITE_SCHEMA";      break;    case SQLITE_CONSTRAINT: zName = "SQLITE_CONSTRAINT";  break;    case SQLITE_MISMATCH:   zName = "SQLITE_MISMATCH";    break;    case SQLITE_MISUSE:     zName = "SQLITE_MISUSE";      break;    case SQLITE_NOLFS:      zName = "SQLITE_NOLFS";       break;    case SQLITE_AUTH:       zName = "SQLITE_AUTH";        break;    case SQLITE_FORMAT:     zName = "SQLITE_FORMAT";      break;    case SQLITE_RANGE:      zName = "SQLITE_RANGE";       break;    case SQLITE_ROW:        zName = "SQLITE_ROW";         break;    case SQLITE_DONE:       zName = "SQLITE_DONE";        break;    default:                zName = "SQLITE_Unknown";     break;  }  Tcl_AppendResult(interp, zName, 0);  return TCL_OK;}/*** Usage: thread_error  ID**** Wait on the most recent operation to complete, then return the** error string.*/static int tcl_thread_error(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  int i;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID", 0);    return TCL_ERROR;  }  i = parse_thread_id(interp, argv[1]);  if( i<0 ) return TCL_ERROR;  if( !threadset[i].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[i]);  Tcl_AppendResult(interp, threadset[i].zErr, 0);  return TCL_OK;}/*** This procedure runs in the thread to compile an SQL statement.*/static void do_compile(Thread *p){  if( p->db==0 ){    p->zErr = p->zStaticErr = "no database is open";    p->rc = SQLITE_ERROR;    return;  }  if( p->pStmt ){    sqlite3_finalize(p->pStmt);    p->pStmt = 0;  }  p->rc = sqlite3_prepare(p->db, p->zArg, -1, &p->pStmt, 0);}/*** Usage: thread_compile ID SQL**** Compile a new virtual machine.*/static int tcl_thread_compile(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  int i;  if( argc!=3 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID SQL", 0);    return TCL_ERROR;  }  i = parse_thread_id(interp, argv[1]);  if( i<0 ) return TCL_ERROR;  if( !threadset[i].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[i]);  threadset[i].xOp = do_compile;  sqliteFree(threadset[i].zArg);  threadset[i].zArg = sqliteStrDup(argv[2]);  threadset[i].opnum++;  return TCL_OK;}/*** This procedure runs in the thread to step the virtual machine.*/static void do_step(Thread *p){  int i;  if( p->pStmt==0 ){    p->zErr = p->zStaticErr = "no virtual machine available";    p->rc = SQLITE_ERROR;    return;  }  p->rc = sqlite3_step(p->pStmt);  if( p->rc==SQLITE_ROW ){    p->argc = sqlite3_column_count(p->pStmt);    for(i=0; i<sqlite3_data_count(p->pStmt); i++){      p->argv[i] = (char*)sqlite3_column_text(p->pStmt, i);    }    for(i=0; i<p->argc; i++){      p->colv[i] = sqlite3_column_name(p->pStmt, i);    }  }}/*** Usage: thread_step ID**** Advance the virtual machine by one step*/static int tcl_thread_step(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  int i;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " IDL", 0);    return TCL_ERROR;  }  i = parse_thread_id(interp, argv[1]);  if( i<0 ) return TCL_ERROR;  if( !threadset[i].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[i]);  threadset[i].xOp = do_step;  threadset[i].opnum++;  return TCL_OK;}/*** This procedure runs in the thread to finalize a virtual machine.*/static void do_finalize(Thread *p){  if( p->pStmt==0 ){    p->zErr = p->zStaticErr = "no virtual machine available";    p->rc = SQLITE_ERROR;    return;  }  p->rc = sqlite3_finalize(p->pStmt);  p->pStmt = 0;}/*** Usage: thread_finalize ID**** Finalize the virtual machine.*/static int tcl_thread_finalize(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  int i;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " IDL", 0);    return TCL_ERROR;  }  i = parse_thread_id(interp, argv[1]);  if( i<0 ) return TCL_ERROR;  if( !threadset[i].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[i]);  threadset[i].xOp = do_finalize;  sqliteFree(threadset[i].zArg);  threadset[i].zArg = 0;  threadset[i].opnum++;  return TCL_OK;}/*** Usage: thread_swap ID ID**** Interchange the sqlite* pointer between two threads.*/static int tcl_thread_swap(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  int i, j;  sqlite3 *temp;  if( argc!=3 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID1 ID2", 0);    return TCL_ERROR;  }  i = parse_thread_id(interp, argv[1]);  if( i<0 ) return TCL_ERROR;  if( !threadset[i].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[i]);  j = parse_thread_id(interp, argv[2]);  if( j<0 ) return TCL_ERROR;  if( !threadset[j].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[j]);  temp = threadset[i].db;  threadset[i].db = threadset[j].db;  threadset[j].db = temp;  return TCL_OK;}/*** Usage: thread_db_get ID**** Return the database connection pointer for the given thread.  Then** remove the pointer from the thread itself.  Afterwards, the thread** can be stopped and the connection can be used by the main thread.*/static int tcl_thread_db_get(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  int i;  char zBuf[100];  extern int sqlite3TestMakePointerStr(Tcl_Interp*, char*, void*);  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID", 0);    return TCL_ERROR;  }  i = parse_thread_id(interp, argv[1]);  if( i<0 ) return TCL_ERROR;  if( !threadset[i].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[i]);  sqlite3TestMakePointerStr(interp, zBuf, threadset[i].db);  threadset[i].db = 0;  Tcl_AppendResult(interp, zBuf, (char*)0);  return TCL_OK;}/*** Usage: thread_stmt_get ID**** Return the database stmt pointer for the given thread.  Then** remove the pointer from the thread itself. */static int tcl_thread_stmt_get(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  int i;  char zBuf[100];  extern int sqlite3TestMakePointerStr(Tcl_Interp*, char*, void*);  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID", 0);    return TCL_ERROR;  }  i = parse_thread_id(interp, argv[1]);  if( i<0 ) return TCL_ERROR;  if( !threadset[i].busy ){    Tcl_AppendResult(interp, "no such thread", 0);    return TCL_ERROR;  }  thread_wait(&threadset[i]);  sqlite3TestMakePointerStr(interp, zBuf, threadset[i].pStmt);  threadset[i].pStmt = 0;  Tcl_AppendResult(interp, zBuf, (char*)0);  return TCL_OK;}/*** Register commands with the TCL interpreter.*/int Sqlitetest4_Init(Tcl_Interp *interp){  static struct {     char *zName;     Tcl_CmdProc *xProc;  } aCmd[] = {     { "thread_create",     (Tcl_CmdProc*)tcl_thread_create     },     { "thread_wait",       (Tcl_CmdProc*)tcl_thread_wait       },     { "thread_halt",       (Tcl_CmdProc*)tcl_thread_halt       },     { "thread_argc",       (Tcl_CmdProc*)tcl_thread_argc       },     { "thread_argv",       (Tcl_CmdProc*)tcl_thread_argv       },     { "thread_colname",    (Tcl_CmdProc*)tcl_thread_colname    },     { "thread_result",     (Tcl_CmdProc*)tcl_thread_result     },     { "thread_error",      (Tcl_CmdProc*)tcl_thread_error      },     { "thread_compile",    (Tcl_CmdProc*)tcl_thread_compile    },     { "thread_step",       (Tcl_CmdProc*)tcl_thread_step       },     { "thread_finalize",   (Tcl_CmdProc*)tcl_thread_finalize   },     { "thread_swap",       (Tcl_CmdProc*)tcl_thread_swap       },     { "thread_db_get",     (Tcl_CmdProc*)tcl_thread_db_get     },     { "thread_stmt_get",   (Tcl_CmdProc*)tcl_thread_stmt_get   },  };  int i;  for(i=0; i<sizeof(aCmd)/sizeof(aCmd[0]); i++){    Tcl_CreateCommand(interp, aCmd[i].zName, aCmd[i].xProc, 0, 0);  }  return TCL_OK;}#elseint Sqlitetest4_Init(Tcl_Interp *interp){ return TCL_OK; }#endif /* OS_UNIX */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品丝袜久久久中文字幕| 欧美精三区欧美精三区| 一区二区不卡在线播放| 国产日本一区二区| 91国在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧洲精品一区二区三区| 884aa四虎影成人精品一区| 男人的j进女人的j一区| 国产精品视频一区二区三区不卡| 欧美午夜精品久久久久久孕妇| 久久精品国产免费看久久精品| 国产精品乱码一区二区三区软件| 欧美美女一区二区在线观看| 国产精品中文字幕一区二区三区| 亚洲卡通欧美制服中文| 欧美一区二区三区人| 黄页网站大全一区二区| 亚洲一区二区三区四区五区中文| 欧美mv和日韩mv国产网站| 99re这里都是精品| 久久99在线观看| 亚洲一区欧美一区| 国产精品无码永久免费888| 在线欧美日韩精品| 国产91精品在线观看| 亚洲成av人影院| 国产精品亲子伦对白| 欧美一区二区免费视频| 91亚洲资源网| 国产成人免费9x9x人网站视频| 亚洲一区二区三区四区中文字幕| 成人一区二区三区| 久久超碰97中文字幕| 日韩成人一级大片| 午夜精品久久久久久久99水蜜桃| 一区二区三区中文字幕在线观看| 亚洲视频免费看| 亚洲免费在线看| 一区二区中文字幕在线| 亚洲婷婷综合色高清在线| 国产精品久久久久久久浪潮网站| 中文在线资源观看网站视频免费不卡 | 国产精品免费aⅴ片在线观看| 精品欧美久久久| 26uuu另类欧美| 欧美成人激情免费网| 欧美成人精品二区三区99精品| 91精品欧美一区二区三区综合在| 337p亚洲精品色噜噜噜| 日韩欧美在线网站| 精品国产乱码久久久久久牛牛| 欧美tk—视频vk| 久久精品夜色噜噜亚洲aⅴ| 欧美极品另类videosde| 中文字幕av一区二区三区免费看| 中文字幕日本乱码精品影院| 一区二区三区日韩精品视频| 亚洲小少妇裸体bbw| 午夜精品久久久久久| 久久疯狂做爰流白浆xx| 国产乱淫av一区二区三区| 成人国产一区二区三区精品| 日本精品一区二区三区高清 | 国产视频视频一区| 中文字幕国产一区| 一区二区三区四区高清精品免费观看| 亚洲一区二区综合| 麻豆成人久久精品二区三区小说| 国产一区二区三区日韩| 99久久久精品| 在线不卡免费av| 久久久久久**毛片大全| 亚洲特黄一级片| 日本视频在线一区| 国产传媒一区在线| 欧洲一区二区三区在线| 日韩一区二区三区四区五区六区 | 一区二区三区四区中文字幕| 五月天久久比比资源色| 韩国欧美国产1区| 91尤物视频在线观看| 制服丝袜一区二区三区| 日本一区二区免费在线观看视频| 亚洲男帅同性gay1069| 蜜桃传媒麻豆第一区在线观看| 成人免费视频app| 欧美巨大另类极品videosbest| 久久久欧美精品sm网站| 亚洲影视资源网| 国产成人免费视频精品含羞草妖精| 色综合久久久久综合| 日韩精品资源二区在线| 亚洲丝袜自拍清纯另类| 久久99精品国产.久久久久久| 97se狠狠狠综合亚洲狠狠| 欧美一区二区人人喊爽| 亚洲手机成人高清视频| 久久国产精品区| 色激情天天射综合网| 久久精品人人做| 日韩精品成人一区二区三区| 99久久综合精品| 日韩精品一区二区三区在线观看| 一区二区三区久久| 高清国产一区二区| 日韩欧美一区二区免费| 亚洲国产日韩一区二区| 成人av动漫网站| 精品99久久久久久| 男女男精品视频网| 欧美优质美女网站| 国产精品美女www爽爽爽| 久久99精品久久只有精品| 欧美三级中文字| 亚洲欧美国产三级| 成人激情动漫在线观看| 2021久久国产精品不只是精品| 日韩在线卡一卡二| 欧美色老头old∨ideo| 亚洲视频每日更新| 成人av在线看| 国产精品丝袜一区| 粉嫩av一区二区三区| 精品对白一区国产伦| 美国一区二区三区在线播放| 欧美三级中文字| 亚洲午夜激情网站| 91久久精品网| 一区二区激情视频| 在线欧美日韩国产| 一区二区三区欧美日韩| 91在线免费视频观看| 国产精品国产三级国产a| 国产aⅴ综合色| 国产视频一区二区在线观看| 国产精品1区2区| 欧美国产精品一区二区| 高清久久久久久| 国产拍揄自揄精品视频麻豆| 国产一区 二区| 久久久久久久久久久久久久久99 | 在线亚洲欧美专区二区| 亚洲男同性恋视频| 色婷婷综合五月| 一区二区三区欧美日| 欧美视频一区二| 日韩国产精品久久| 日韩精品一区二区三区在线播放| 久久97超碰色| 国产日韩精品一区| 成人短视频下载| 亚洲日本在线观看| 欧美色窝79yyyycom| 亚洲国产日产av| 欧美一区二区视频在线观看2020 | 蜜桃一区二区三区四区| 欧美xxxxx裸体时装秀| 国产精品亚洲人在线观看| 国产精品久久久久精k8| 欧美亚洲一区二区在线观看| 日韩av在线免费观看不卡| 精品国产一区二区三区不卡| 国产91综合一区在线观看| 亚洲乱码国产乱码精品精98午夜 | av午夜精品一区二区三区| 亚洲精品视频观看| 欧美高清hd18日本| 国产精品一二一区| 亚洲激情自拍偷拍| 欧美本精品男人aⅴ天堂| 成人免费毛片aaaaa**| 亚洲国产aⅴ天堂久久| 欧美r级在线观看| 99精品黄色片免费大全| 五月激情六月综合| 精品国产91亚洲一区二区三区婷婷| 粉嫩aⅴ一区二区三区四区五区| 亚洲精品国产一区二区精华液| 日韩欧美国产一二三区| www.av亚洲| 蜜臀久久99精品久久久画质超高清 | 精品国产乱码久久久久久影片| 99久久久国产精品| 免费成人在线观看| 成人欧美一区二区三区小说| 在线播放/欧美激情| 丁香一区二区三区| 日韩专区中文字幕一区二区| 亚洲国产精华液网站w | 日韩欧美一区在线| av资源网一区| 美国十次综合导航| 一区二区三区在线视频观看58| 精品国产一区二区三区四区四| 91久久精品一区二区三| 国产宾馆实践打屁股91| 美女网站一区二区| 亚洲综合色网站| 国产精品久久久久久久裸模|