久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    android sqlite3詳解

     Ebric 2012-03-16

    android sqlite3詳解

          SQLite庫包含一個名字叫做sqlite3的命令行,它可以讓用戶手工輸入并執行面向SQLite數據庫的SQL命令。本文檔提供一個使用sqlite3命令的簡要說明。
             


          啟動sqlite3程序,僅僅需要敲入帶有SQLite數據庫名字的"sqlite3"命令即可。如果文件不存在,則創建一個新的(數據庫)文件。然后sqlite3程序將提示你輸入SQL。敲入SQL語句(以分號“;”結束),敲回車鍵之后,SQL語句就會執行。

    例如,創建一張"tb11"表,你可以這樣做:
    C:\Users\Administrator>adb shell
    # sqlite3
    SQLite version 3.5.9
    Enter ".help" for instructions
    sqlite> create table tb_stu(id smallint,name varchar(10));
    sqlite> insert into tb_stu values(1,'zhangsan');
    sqlite> insert into tb_stu values (2,'lisi');
    sqlite> .mode column
    sqlite> .width 10
    sqlite> select * from tb_stu;
    1           zhangsan
    2           lisi
    sqlite>
    復制代碼

                         

          你可以通過敲你所用系統的文件結束符(通常是Ctrl + D)或者中斷字符(通常是Ctrl + C),來終止sqlite3程序。確定你在每個SQL語句結束敲入分號!sqlite3程序通過查找分號來決定一個SQL語句的結束。如果你省略分號,sqlite3將給你一個連續的命令提示符并等你給當前的SQL命令添加更多的文字。這個特點讓你輸入多行的多個SQL語句,例如:
    sqlite> create table tb_stu(
    create table tb_stu(
       ...> id smallint,
       ...> name varchar(10)
       ...> );
    );
    復制代碼

                         
    題外話:查詢SQLITE_MASTER表 
    SQLite數據庫的表數據結構被保存在一個名叫"sqlite_master"的特殊的表中。你可以像查詢其它表一樣通過執行“SELECT”查詢這個特殊的表。
    sqlite> select * from sqlite_master;
    table  tb_stu      tb_stu      2           CREATE TABLE tb_stu(id smallint,name varchar(10))
    sqlite>
    復制代碼

          但你不能在sqlite_master表中執行諸如DROP TABLE, UPDATE, INSERT 或者DELETE命令。sqlite_master表在你創建、刪除和索引數據庫時自動更新這個表。你不能手工更改sqlite_master表。

          TEMPORARY表的結構沒有存儲在"sqlite_master"表中,由于TEMPORARY表對應用是不可見的,而不是應用程序創建這個表。 TEMPORARY表結構被存儲在另外一個名叫"sqlite_temp_master"的特定的表中。"sqlite_temp_master"表是臨時表自身。

               

    sqlite3的特殊命令

    大多數時候,sqlite3讀入輸入行,并把它們傳遞到SQLite庫中去運行。但是如果輸入行以一個點(“.”)開始,那么這行將被sqlite3程序自己截取并解釋。這些“點命令”通常被用來改變查詢輸出的格式,或者執行鞭個預封包(預定義prepackaged)的查詢語句。

    你可以在任何時候輸入“.help”,列出可用的點命令。例如
    sqlite> .help
    .bail ON|OFF           Stop after hitting an error. Default OFF
    .databases             List names and files of attached databases
    .dump ?TABLE? ...      Dump the database in an SQL text format
    .echo ON|OFF           Turn command echo on or off
    .exit                  Exit this program
    .explain ON|OFF        Turn output mode suitable for EXPLAIN on or off.
    .header(s) ON|OFF      Turn display of headers on or off
    .help                  Show this message
    .import FILE TABLE     Import data from FILE into TABLE
    .indices TABLE         Show names of all indices on TABLE
    .load FILE ?ENTRY?     Load an extension library
    .mode MODE ?TABLE?     Set output mode where MODE is one of:
                             csv      Comma-separated values
                             column   Left-aligned columns. (See .width)
                             html     HTML <table> code
                             insert   SQL insert statements for TABLE
                             line     One value per line
                             list     Values delimited by .separator string
                             tabs     Tab-separated values
                             tcl      TCL list elements
    .nullvalue STRING      Print STRING in place of NULL values
    .output FILENAME       Send output to FILENAME
    .output stdout         Send output to the screen
    .prompt MAIN CONTINUE Replace the standard prompts
    .quit                  Exit this program
    .read FILENAME         Execute SQL in FILENAME
    .schema ?TABLE?        Show the CREATE statements
    .separator STRING      Change separator used by output mode and .import
    .show                  Show the current values for various settings
    .tables ?PATTERN?      List names of tables matching a LIKE pattern
    .timeout MS            Try opening locked tables for MS milliseconds
    .width NUM NUM ...     Set column widths for "column" mode
    sqlite>
    復制代碼

              

    改變輸出格式
    sqlite3程序可以以八種不同的格式顯示一個查詢的結果:"csv", "列", "html", "插入", "行", "制表"和"tcl"。你可以用".mode"點命令在這些輸出格式之間切換。
                 

    默認的輸出格式是“列表”。在列表模式下,每條查詢結果記錄被寫在一行中并且每列之間以一個字符串分割符隔開。默認的分隔符是一個管道符號(“|”)。列表符號在當你輸出查詢結果到另外一個符加處理的程序(如AWK)中去是尤為有用。
    sqlite> .mode list
    sqlite> select * from tb_stu;
    1|zhangsan
    2|lisi
    sqlite>
    復制代碼

              

    你可以用“.separator”點命令來改變分界符。例如,為了把分割符改為一個逗號和一個空格,你可以這樣做:
    sqlite> .separator ''
    sqlite> select * from tb_stu;
    1   zhangsan
    2   lisi
    sqlite>


    或者
    sqlite> .separator ','
    sqlite> select * from tb_stu;
    1,zhangsan
    2,lisi
    sqlite>
    復制代碼

                  

    在“line"模式下,每一個位于條記錄中的列在它自己那行顯示。每行由列名、一個等號和列數據組成。下一條記錄以一個空行隔開。這是一個行模式輸出的例子:
    sqlite> .mode line
    sqlite> select * from tb_stu;
       id = 1
     name = zhangsan

       id = 2
     name = lisi
    sqlite>
    復制代碼

                

    在列模式下,每條記錄在一個單獨的行中以數據列對齊的方式顯示。列如:
    sqlite> .mode column
    sqlite> select * from tb_stu;
    1      zhangsan
    2      lisi
    sqlite>
    復制代碼

         

    在默認的情況下,每列至少10個字符寬。太寬的數據將被截取。你可以用“.width”命令來調整列寬。如下所示:
    --每一列列寬都為10
    sqlite> .width 10
    sqlite> select * from tb_stu;
    1           zhangsan
    2           lisi
    sqlite>
    --設置第一列寬為12第二列寬為6。其它的列寬不變
    sqlite> .width 12 6
    sqlite> select * from tb_stu;
    1           zhangsan
    2           lisi
    sqlite>
    復制代碼

    上面例子中".width"命令設置第一列寬為12第二列寬為6。其它的列寬不變。你可以指定與你查詢結果需要的列數一樣多的“.width”參數。

    如果你指定一列寬為0,那么這個列寬將自動以下面三個數字中的最大值做為列寬:10、表頭寬度和最寬的數據列的寬度。這可以讓列自動調整寬度。每列的默認設置為自動調整的0值。

                
    出現在輸出開頭兩行的列標示可以用".header"點命令關閉。在上面的例子中,列標示是打開的。可以用下面的方法關閉列標示:
    sqlite> .header off
    sqlite> select * from tb_stu;
    1             zhang
    2             lisi
    sqlite>
    復制代碼

                

    另外一個有用的輸出模式是"insert"。在插入模式下,被子格式化為看起來像SQL INSERT語句的樣式。你可以用插入模式來產生文件(便于)以后用于不同數據庫的輸入。

    當指定插入模式時,你必須給定一個特定參數就是要插入的表名。例如:
    sqlite> .mode insert tb_stu_temp
    sqlite> select * from tb_stu;
    INSERT INTO tb_stu_temp VALUES(1,'zhangsan');
    INSERT INTO tb_stu_temp VALUES(2,'lisi');
    sqlite>
    復制代碼

             

    最新的輸出格式是“html”。在這種模式下,sqlite3把查詢的結果寫做XHTML表。開始的<TABLE>和結束的</TABLE>(標記)沒有寫出,但有<TR>、<TH>和<TD>等分界符。html輸出對CGI來說是相當有用地。
         

    把結果寫到文件中
    默認情況下,sqlte3把結果送到標準輸出。你可以用“.output”命令改變它。只須把輸出文件名做為.output命令的輸出參數然后所有后續查詢結果將被寫到那個文件中。用“.output stdout”再一次改為標準輸出。例如:
    sqlite> .separator |
    sqlite> .output tb_stu_temp.txt
    sqlite> select * from tb_stu;
    sqlite> .exit
    # cat tb_stu_temp.txt
    hello|10
    goodbye|20
    復制代碼

               

    查詢數據庫結構
    sqlite3程序提供幾個有用的用于查詢數據庫結構的快捷命令。這些不是不可以用別的方式來實現。這些命令僅僅是一個快捷方式而已。
    例如,為了查看數據庫的所有表,你可以敲入“.tables”。
           

     “.tables”命令相似于設置列表模式然后執行接下來的查詢:
    .databases 列出數據庫文件名
    .tables ?PATTERN? 列出?PATTERN?匹配的表名
    .import FILE TABLE 將文件中的數據導入的文件中
    .dump ?TABLE? 生成形成數據庫表的SQL腳本
    .output FILENAME 將輸出導入到指定的文件中
    .output stdout 將輸出打印到屏幕
    .mode MODE ?TABLE?     設置數據輸出模式(csv,html,tcl…
    .nullvalue STRING 用指定的串代替輸出的NULL串
    .read FILENAME 執行指定文件中的SQL語句
    .schema ?TABLE? 打印創建數據庫表的SQL語句
    .separator STRING 用指定的字符串代替字段分隔符
    .show 打印所有SQLite環境變量的設置
    .quit 退出命令行接口

              

    數據類型

    sqlite3對字段沒有嚴格要求,字段可以存儲任何類型數據,它會適時的自動轉換,當然,你也可以創建表的時候對數據類型進行定義。

    sqlite3包含null、integer、real、text、blob等數據類型,但實際上sqlite3也接收如下數據類型:
    smallint 16位的整數。
    interger 32位的整數。
    decimal(p,s) 指定精度或對象能夠控制的數字個數。
    p:小數點左邊和右邊數字之和,不包括小數點。如 123.45,則 p=5,s=2。
    s:小數點右邊的位數或個數。
    float 32位的浮點數。
    double 64位的浮點數。
    char(n) n長度的字符串,n不能超過254。
    varchar(n) 長度不固定且其最大長度為n的字符串,n不能超過4000。
    graphic(n) 和char(n)一樣,不過其單位是兩個字元double-bytes,n不能超過127。這個形態是為了支援兩個字節長度的字體,例如中文字。
    vargraphic(n) 可變長度且其最大長度為n的雙字元字串,n不能超過2000
    date 包含了 年份、月份、日期。
    time 包含了 小時、分鐘、秒。
    timestamp 包含了 年、月、日、時、分、秒、千分之一秒。
               
    查看
    .databases 顯示數據庫信息(好像.database也可以)
    .tables 顯示所有表名(好像.table也可以)
    .schema 查看所有表的數據結構;
    .schema table_name 查看某表的數據結構
    插入記錄
    insert into table_name values (field1, field2, field3...);
    查詢
    select * from table_name;查看table_name表中所有記錄;
    select * from table_name where field1='xxxxx'; 查詢符合指定條件的記錄;
    刪除
    drop table_name; 刪除表;
    drop index_name; 刪除索引;
    改變輸出格式
    .mode list|column|insert|line|tabs|tcl|csv
    .separator "," 更改分界符號為,
    .width 5 每列寬度為5
    更改輸出
    .output file_name|stdout

            

    接下來演示如何在android項目中操作數據庫?
    1)、首先在myeclipse中新建一個android項目命名為testprj,并運行項目,目錄結構如下:

     


    2)、操作數據庫,因為sqlite數據庫存放在/data/data/package/目錄下,我們可以通過cd命令進入/data/data/package/目錄下進行數據庫的操作:
    adb shell #進入linux命令環境
    cd /data/data/com.ljq.activity/ #進入/data/data/com.ljq.activity/目錄下
    sqlite3 test.db #進入sqlite的操作環境,如果文件存在,則直接打開
    create table tb_stu(id smallint,name varchar(20),pwd varchar(6)) #新建一張tb_stu表
    insert into tb_stu values (1, 'zhangsan', '123456');
    insert into tb_stu values (2, 'lisi', '123456');

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 无码欧亚熟妇人妻AV在线外遇 | 精品人妻系列无码人妻漫画| 国产香蕉尹人在线视频你懂的| 久久久久无码国产精品不卡| 一区二区三区国产不卡| 亚洲理论在线A中文字幕| 亚洲AV无码专区亚洲AV桃 | 亚洲AV中文无码乱人伦在线咪咕| 中文字幕久久国产精品| 成人无码午夜在线观看| 天天综合网网欲色| 日本久久99成人网站| 成人免费看片又大又黄| 疯狂做受XXXX高潮国产| 免费人妻无码不卡中文字幕18禁 | 污污污污污污WWW网站免费| 亚洲人成网站77777在线观看| 亚洲乱码日产精品一二三| 亚洲欧洲精品一区二区| 冲田杏梨AV一区二区三区| 被拉到野外强要好爽| 成人无码午夜在线观看| 高清有码国产一区二区| 亚洲爆乳少妇无码激情| 日韩av综合免费在线| 日本A级视频在线播放| 亚洲人妻精品中文字幕| 欧美黑人又大又粗XXXXX| 欧美成人午夜在线观看视频| 亚洲国产精品一区二区WWW| 免费午夜无码片在线观看影院| 国产精品久久久久无码AV| 久久综合亚洲鲁鲁九月天| 亚洲性无码AV在线欣赏网 | 国产猛男猛女超爽免费视频| 久久97人人超人人超碰超国产| 日产一二三四乱码| 国产偷窥熟女高潮精品视频| 一卡2卡三卡4卡免费网站| 无码囯产精品一区二区免费| 女人被黑人躁得好爽视频|