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

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

?? sqlitecon.tcl

?? 新版輕量級嵌入式數據庫
?? TCL
?? 第 1 頁 / 共 2 頁
字號:
# A Tk console widget for SQLite.  Invoke sqlitecon::create with a window name,# a prompt string, a title to set a new top-level window, and the SQLite# database handle.  For example:##     sqlitecon::create .sqlcon {sql:- } {SQL Console} db## A toplevel window is created that allows you to type in SQL commands to# be processed on the spot.## A limited set of dot-commands are supported:##     .table#     .schema ?TABLE?#     .mode list|column|multicolumn|line#     .exit## In addition, a new SQL function named "edit()" is created.  This function# takes a single text argument and returns a text result.  Whenever the# the function is called, it pops up a new toplevel window containing a# text editor screen initialized to the argument.  When the "OK" button# is pressed, whatever revised text is in the text editor is returned as# the result of the edit() function.  This allows text fields of SQL tables# to be edited quickly and easily as follows:##    UPDATE table1 SET dscr = edit(dscr) WHERE rowid=15;## Create a namespace to work in#namespace eval ::sqlitecon {  # do nothing}# Create a console widget named $w.  The prompt string is $prompt.# The title at the top of the window is $title.  The database connection# object is $db#proc sqlitecon::create {w prompt title db} {  upvar #0 $w.t v  if {[winfo exists $w]} {destroy $w}  if {[info exists v]} {unset v}  toplevel $w  wm title $w $title  wm iconname $w $title  frame $w.mb -bd 2 -relief raised  pack $w.mb -side top -fill x  menubutton $w.mb.file -text File -menu $w.mb.file.m  menubutton $w.mb.edit -text Edit -menu $w.mb.edit.m  pack $w.mb.file $w.mb.edit -side left -padx 8 -pady 1  set m [menu $w.mb.file.m -tearoff 0]  $m add command -label {Close} -command "destroy $w"  sqlitecon::create_child $w $prompt $w.mb.edit.m  set v(db) $db  $db function edit ::sqlitecon::_edit}# This routine creates a console as a child window within a larger# window.  It also creates an edit menu named "$editmenu" if $editmenu!="".# The calling function is responsible for posting the edit menu.#proc sqlitecon::create_child {w prompt editmenu} {  upvar #0 $w.t v  if {$editmenu!=""} {    set m [menu $editmenu -tearoff 0]    $m add command -label Cut -command "sqlitecon::Cut $w.t"    $m add command -label Copy -command "sqlitecon::Copy $w.t"    $m add command -label Paste -command "sqlitecon::Paste $w.t"    $m add command -label {Clear Screen} -command "sqlitecon::Clear $w.t"    $m add separator    $m add command -label {Save As...} -command "sqlitecon::SaveFile $w.t"    catch {$editmenu config -postcommand "sqlitecon::EnableEditMenu $w"}  }  scrollbar $w.sb -orient vertical -command "$w.t yview"  pack $w.sb -side right -fill y  text $w.t -font fixed -yscrollcommand "$w.sb set"  pack $w.t -side right -fill both -expand 1  bindtags $w.t Sqlitecon  set v(editmenu) $editmenu  set v(history) 0  set v(historycnt) 0  set v(current) -1  set v(prompt) $prompt  set v(prior) {}  set v(plength) [string length $v(prompt)]  set v(x) 0  set v(y) 0  set v(mode) column  set v(header) on  $w.t mark set insert end  $w.t tag config ok -foreground blue  $w.t tag config err -foreground red  $w.t insert end $v(prompt)  $w.t mark set out 1.0  after idle "focus $w.t"}bind Sqlitecon <1> {sqlitecon::Button1 %W %x %y}bind Sqlitecon <B1-Motion> {sqlitecon::B1Motion %W %x %y}bind Sqlitecon <B1-Leave> {sqlitecon::B1Leave %W %x %y}bind Sqlitecon <B1-Enter> {sqlitecon::cancelMotor %W}bind Sqlitecon <ButtonRelease-1> {sqlitecon::cancelMotor %W}bind Sqlitecon <KeyPress> {sqlitecon::Insert %W %A}bind Sqlitecon <Left> {sqlitecon::Left %W}bind Sqlitecon <Control-b> {sqlitecon::Left %W}bind Sqlitecon <Right> {sqlitecon::Right %W}bind Sqlitecon <Control-f> {sqlitecon::Right %W}bind Sqlitecon <BackSpace> {sqlitecon::Backspace %W}bind Sqlitecon <Control-h> {sqlitecon::Backspace %W}bind Sqlitecon <Delete> {sqlitecon::Delete %W}bind Sqlitecon <Control-d> {sqlitecon::Delete %W}bind Sqlitecon <Home> {sqlitecon::Home %W}bind Sqlitecon <Control-a> {sqlitecon::Home %W}bind Sqlitecon <End> {sqlitecon::End %W}bind Sqlitecon <Control-e> {sqlitecon::End %W}bind Sqlitecon <Return> {sqlitecon::Enter %W}bind Sqlitecon <KP_Enter> {sqlitecon::Enter %W}bind Sqlitecon <Up> {sqlitecon::Prior %W}bind Sqlitecon <Control-p> {sqlitecon::Prior %W}bind Sqlitecon <Down> {sqlitecon::Next %W}bind Sqlitecon <Control-n> {sqlitecon::Next %W}bind Sqlitecon <Control-k> {sqlitecon::EraseEOL %W}bind Sqlitecon <<Cut>> {sqlitecon::Cut %W}bind Sqlitecon <<Copy>> {sqlitecon::Copy %W}bind Sqlitecon <<Paste>> {sqlitecon::Paste %W}bind Sqlitecon <<Clear>> {sqlitecon::Clear %W}# Insert a single character at the insertion cursor#proc sqlitecon::Insert {w a} {  $w insert insert $a  $w yview insert}# Move the cursor one character to the left#proc sqlitecon::Left {w} {  upvar #0 $w v  scan [$w index insert] %d.%d row col  if {$col>$v(plength)} {    $w mark set insert "insert -1c"  }}# Erase the character to the left of the cursor#proc sqlitecon::Backspace {w} {  upvar #0 $w v  scan [$w index insert] %d.%d row col  if {$col>$v(plength)} {    $w delete {insert -1c}  }}# Erase to the end of the line#proc sqlitecon::EraseEOL {w} {  upvar #0 $w v  scan [$w index insert] %d.%d row col  if {$col>=$v(plength)} {    $w delete insert {insert lineend}  }}# Move the cursor one character to the right#proc sqlitecon::Right {w} {  $w mark set insert "insert +1c"}# Erase the character to the right of the cursor#proc sqlitecon::Delete w {  $w delete insert}# Move the cursor to the beginning of the current line#proc sqlitecon::Home w {  upvar #0 $w v  scan [$w index insert] %d.%d row col  $w mark set insert $row.$v(plength)}# Move the cursor to the end of the current line#proc sqlitecon::End w {  $w mark set insert {insert lineend}}# Add a line to the history#proc sqlitecon::addHistory {w line} {  upvar #0 $w v  if {$v(historycnt)>0} {    set last [lindex $v(history) [expr $v(historycnt)-1]]    if {[string compare $last $line]} {      lappend v(history) $line      incr v(historycnt)    }  } else {    set v(history) [list $line]    set v(historycnt) 1  }  set v(current) $v(historycnt)}# Called when "Enter" is pressed.  Do something with the line# of text that was entered.#proc sqlitecon::Enter w {  upvar #0 $w v  scan [$w index insert] %d.%d row col  set start $row.$v(plength)  set line [$w get $start "$start lineend"]  $w insert end \n  $w mark set out end  if {$v(prior)==""} {    set cmd $line  } else {    set cmd $v(prior)\n$line  }  if {[string index $cmd 0]=="." || [$v(db) complete $cmd]} {    regsub -all {\n} [string trim $cmd] { } cmd2    addHistory $w $cmd2    set rc [catch {DoCommand $w $cmd} res]    if {![winfo exists $w]} return    if {$rc} {      $w insert end $res\n err    } elseif {[string length $res]>0} {      $w insert end $res\n ok    }    set v(prior) {}    $w insert end $v(prompt)  } else {    set v(prior) $cmd    regsub -all {[^ ]} $v(prompt) . x    $w insert end $x  }  $w mark set insert end  $w mark set out {insert linestart}  $w yview insert}# Execute a single SQL command.  Pay special attention to control# directives that begin with "."## The return value is the text output from the command, properly# formatted.#proc sqlitecon::DoCommand {w cmd} {  upvar #0 $w v  set mode $v(mode)  set header $v(header)  if {[regexp {^(\.[a-z]+)} $cmd all word]} {    if {$word==".mode"} {      regexp {^.[a-z]+ +([a-z]+)} $cmd all v(mode)      return {}    } elseif {$word==".exit"} {      destroy [winfo toplevel $w]      return {}    } elseif {$word==".header"} {      regexp {^.[a-z]+ +([a-z]+)} $cmd all v(header)      return {}    } elseif {$word==".tables"} {      set mode multicolumn      set cmd {SELECT name FROM sqlite_master WHERE type='table'               UNION ALL               SELECT name FROM sqlite_temp_master WHERE type='table'}      $v(db) eval {PRAGMA database_list} {         if {$name!="temp" && $name!="main"} {            append cmd "UNION ALL SELECT name FROM $name.sqlite_master\                        WHERE type='table'"         }      }      append cmd  { ORDER BY 1}    } elseif {$word==".fullschema"} {      set pattern %      regexp {^.[a-z]+ +([^ ]+)} $cmd all pattern      set mode list      set header 0      set cmd "SELECT sql FROM sqlite_master WHERE tbl_name LIKE '$pattern'               AND sql NOT NULL UNION ALL SELECT sql FROM sqlite_temp_master               WHERE tbl_name LIKE '$pattern' AND sql NOT NULL"      $v(db) eval {PRAGMA database_list} {         if {$name!="temp" && $name!="main"} {            append cmd " UNION ALL SELECT sql FROM $name.sqlite_master\                        WHERE tbl_name LIKE '$pattern' AND sql NOT NULL"         }      }    } elseif {$word==".schema"} {      set pattern %      regexp {^.[a-z]+ +([^ ]+)} $cmd all pattern      set mode list      set header 0      set cmd "SELECT sql FROM sqlite_master WHERE name LIKE '$pattern'               AND sql NOT NULL UNION ALL SELECT sql FROM sqlite_temp_master               WHERE name LIKE '$pattern' AND sql NOT NULL"      $v(db) eval {PRAGMA database_list} {         if {$name!="temp" && $name!="main"} {            append cmd " UNION ALL SELECT sql FROM $name.sqlite_master\                        WHERE name LIKE '$pattern' AND sql NOT NULL"         }      }    } else {      return \        ".exit\n.mode line|list|column\n.schema ?TABLENAME?\n.tables"    }  }  set res {}  if {$mode=="list"} {    $v(db) eval $cmd x {      set sep {}      foreach col $x(*) {        append res $sep$x($col)        set sep |      }      append res \n    }    if {[info exists x(*)] && $header} {      set sep {}      set hdr {}      foreach col $x(*) {        append hdr $sep$col        set sep |      }      set res $hdr\n$res    }  } elseif {[string range $mode 0 2]=="col"} {    set y {}    $v(db) eval $cmd x {      foreach col $x(*) {        if {![info exists cw($col)] || $cw($col)<[string length $x($col)]} {           set cw($col) [string length $x($col)]        }        lappend y $x($col)      }    }    if {[info exists x(*)] && $header} {      set hdr {}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产激情一区二区三区| 日本久久精品电影| 久久久久国产成人精品亚洲午夜 | 中文天堂在线一区| 国产一区二区伦理| 久久综合久久鬼色中文字| 久久99国产精品尤物| 精品人在线二区三区| 久久99精品久久久久婷婷| 精品国偷自产国产一区| 九九**精品视频免费播放| 精品国产乱码久久久久久牛牛| 免费观看久久久4p| 亚洲精品一区二区三区精华液 | 欧美日韩一区二区三区视频| 亚洲影院久久精品| 欧美久久免费观看| 久久精品国产亚洲一区二区三区 | 日韩午夜中文字幕| 久久成人18免费观看| 久久久久久夜精品精品免费| 国产a视频精品免费观看| 亚洲欧洲日韩综合一区二区| 91偷拍与自偷拍精品| 亚洲一区二区三区四区的| 欧美另类久久久品| 久久国产精品99久久久久久老狼| 精品久久久久香蕉网| 国产成人av电影在线| 亚洲欧洲日韩女同| 在线国产电影不卡| 日本免费新一区视频| 久久久国际精品| av午夜精品一区二区三区| 又紧又大又爽精品一区二区| 欧美精品一卡两卡| 国产在线播放一区| 国产精品久久毛片av大全日韩| 日本韩国一区二区| 美洲天堂一区二卡三卡四卡视频| 久久一夜天堂av一区二区三区| 成+人+亚洲+综合天堂| 亚洲一区二区三区国产| 日韩免费观看高清完整版在线观看| 激情伊人五月天久久综合| 国产精品国产三级国产有无不卡| 欧美又粗又大又爽| 久久精工是国产品牌吗| 国产精品美女久久久久aⅴ| 在线一区二区视频| 欧美自拍偷拍午夜视频| 久久国产乱子精品免费女| 国产精品国产三级国产aⅴ入口| 欧美色男人天堂| 久久99日本精品| 亚洲精品你懂的| 欧美v日韩v国产v| 91日韩一区二区三区| 麻豆精品一二三| 亚洲色图一区二区三区| 日韩一级精品视频在线观看| 波多野结衣一区二区三区| 午夜电影一区二区| 中日韩av电影| 欧美一级免费大片| av电影天堂一区二区在线| 日韩国产欧美在线观看| 国产精品久久久久影院色老大| 欧美三级蜜桃2在线观看| 国产成人精品一区二区三区四区| 亚洲一区二区视频在线观看| 久久免费美女视频| 欧美日韩精品一区二区三区 | 久久成人18免费观看| 亚洲视频小说图片| 久久只精品国产| 欧美日韩国产首页在线观看| 成人性色生活片| 久久精工是国产品牌吗| 亚洲小说欧美激情另类| 国产精品色哟哟| 欧美xingq一区二区| 欧美日韩国产在线观看| 成人高清视频免费观看| 精品无码三级在线观看视频| 亚洲国产综合在线| 中文字幕一区二区三区视频| 精品99999| 91精品国产欧美一区二区| 色94色欧美sute亚洲13| 成人高清视频免费观看| 国产在线一区观看| 日韩成人一级大片| 一区二区三区视频在线看| 国产精品网友自拍| 久久麻豆一区二区| 日韩精品在线看片z| 欧美精品v国产精品v日韩精品| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日本一区二区在线不卡| 亚洲精品一线二线三线| 91精品国产综合久久久蜜臀粉嫩 | 亚洲精品欧美专区| 国产精品嫩草影院av蜜臀| 久久亚洲影视婷婷| 欧美成人vr18sexvr| 3atv在线一区二区三区| 欧美日韩在线播放三区| 色狠狠桃花综合| av不卡在线播放| 不卡免费追剧大全电视剧网站| 国产精品1区2区| 国产美女娇喘av呻吟久久| 久久se精品一区精品二区| 热久久国产精品| 男人的j进女人的j一区| 日本不卡一二三区黄网| 日韩二区三区四区| 性久久久久久久| 亚洲成人777| 欧美网站一区二区| 欧美在线观看18| 欧美日韩精品三区| 欧美日韩免费电影| 在线不卡一区二区| 欧美一区2区视频在线观看| 欧美一区二区在线视频| 欧美一级高清片| 精品国产露脸精彩对白| 精品国产乱码久久久久久影片| www国产精品av| 久久精品亚洲国产奇米99 | 日韩欧美激情在线| 精品久久久久香蕉网| 久久综合狠狠综合久久激情| 久久久一区二区三区捆绑**| 久久精品欧美日韩| 国产精品久久久久三级| 亚洲人成7777| 亚洲第四色夜色| 日本成人在线网站| 狠狠色丁香久久婷婷综合丁香| 国产精品一区在线| 播五月开心婷婷综合| 日本道免费精品一区二区三区| 欧美色图在线观看| 91精品国模一区二区三区| 精品国产污污免费网站入口| 久久一留热品黄| 国产精品日韩成人| 一区二区三区欧美久久| 亚洲成av人片在线观看无码| 日本欧美在线看| 国产精品影音先锋| 色综合天天综合网天天狠天天| 欧洲一区二区三区在线| 欧美一区二区日韩| 欧美激情自拍偷拍| 一区二区激情小说| 蜜臀av性久久久久蜜臀av麻豆| 韩国成人在线视频| 91在线观看高清| 69堂精品视频| 国产香蕉久久精品综合网| 亚洲老妇xxxxxx| 麻豆视频一区二区| 成人中文字幕在线| 欧美日韩一区二区在线观看| 精品国产污网站| 亚洲视频在线一区观看| 日韩专区欧美专区| 成人自拍视频在线观看| 欧美四级电影网| 精品国产乱码久久久久久夜甘婷婷 | 国产拍揄自揄精品视频麻豆 | 久久久国产精品午夜一区ai换脸| 综合久久给合久久狠狠狠97色| 午夜视频一区二区三区| 国产精品99久久久久久似苏梦涵| 99久久久久免费精品国产 | 日韩精品一区二区三区四区视频| 国产精品麻豆网站| 爽爽淫人综合网网站| 国产精品一区二区你懂的| 亚洲人xxxx| 久久99精品国产91久久来源| 成a人片亚洲日本久久| 欧美一区二区三区性视频| 亚洲欧洲一区二区在线播放| 日本人妖一区二区| 91色porny蝌蚪| 久久综合久久久久88| 亚洲中国最大av网站| 国产成人免费视频一区| 欧美群妇大交群中文字幕| 欧美韩国日本不卡| 日韩成人免费电影| 色94色欧美sute亚洲13| 久久精品人人做人人爽人人| 午夜成人在线视频|