android SQLite

SQLite是Android內(nèi)嵌的一個數(shù)據(jù)庫全蝶,用于存儲大量的數(shù)據(jù)裂垦,其特點是輕量級限番,占用內(nèi)存很少,不需要安裝胰默,多有的數(shù)據(jù)都包含在一個文件中,多個平臺只需拷貝數(shù)據(jù)庫文件就可直接使用漓踢,默認只能本應(yīng)用訪問初坠,app卸載時會一同被卸載。

存儲路徑:/data/data/包名/databases/xx.db

SQLite管理工具:可視化的數(shù)據(jù)庫管理工具彭雾,推薦SQLite Expert Professional,

? ?下載地址:http://www.sqliteexpert.com

主鍵:_id integer primary key autoincrement ?表示設(shè)置_id為主鍵并自增

數(shù)據(jù)庫類型

NULL: 這個值為空值

VARCHAR(n):長度不固定且其最大長度為 n 的字串碟刺,n不能超過 4000。

CHAR(n):長度固定為n的字串薯酝,n不能超過 254半沽。

INTEGER: 值被標識為整數(shù),依據(jù)值的大小可以依次被存儲為1,2,3,4,5,6,7,8.

REAL: 所有值都是浮動的數(shù)值,被存儲為8字節(jié)的IEEE浮動標記序號.

TEXT: 值為文本字符串,使用數(shù)據(jù)庫編碼存儲(TUTF-8, UTF-16BE or UTF-16-LE).

BLOB: 值是BLOB數(shù)據(jù)塊,以輸入的數(shù)據(jù)格式進行存儲吴菠。如何輸入就如何存儲,不改??變格式者填。

BINARY:用于保存圖片,對應(yīng)字節(jié)數(shù)組byte[]

DATA :包含了 年份做葵、月份占哟、日期。

TIME: 包含了 小時酿矢、分鐘榨乎、秒

SQLiteDatabase

SQLiteDatabase代表一個數(shù)據(jù)庫對象,數(shù)據(jù)庫的核心類之一瘫筐,針對數(shù)據(jù)操作的主要類蜜暑,主要對數(shù)據(jù)庫的表的創(chuàng)建,增刪改查等動作策肝,其方法:

SQLiteDatabase除了本身的insert肛捍,update,delete等操作語句之众,還有兩個同樣可以進行數(shù)據(jù)的操作拙毫。

executeSQL(String sql, Object[] bindArgs);// 執(zhí)行語句的增刪改,并不是用于查詢

rawQuery(String sql, String[] selectionArgs);查詢語句棺禾,返回Cursor對象

常用增刪改查語句

創(chuàng)建表:db.execSQL("create table wdply(_id integer primary key autoincrement,name varchar ,age int,sex varchat,tel varchar)");

增:db.execSQL("insert into wdply values(null,?,?,?,?)", newObject[]{"小明",1,"男","159"});

刪:db.execSQL("delete from wdply where name=?", newObject[]{"小明"});

改:db.execSQL("update wdply set sex=? where name=?", newObject[]{"女","小明"});

查:Cursor cursor = db.rawQuery("select * from wdply", null);

Cursor對象

查詢語句時缀蹄,返回cursor對象,用于讀取查詢到的數(shù)據(jù),cursor對象常用的方法:

SQLiteOpenHelper

是抽象類袍患,子類必須繼承SQLiteOpenHelper坦康,并實現(xiàn)其連個抽象方法:

onCreate(SQLiteDatabasedb):

onUpgrade(SQLiteDatabasedb, int oldVersion, int newVersion)

SQLiteDatabase會自動檢測數(shù)據(jù)庫文件是否存在,如果數(shù)據(jù)庫存在诡延,會打開這個數(shù)據(jù)庫滞欠,在這種情況下并不會執(zhí)行onCreate()方法,如果數(shù)據(jù)庫文件不存在肆良,則會創(chuàng)建一個數(shù)據(jù)庫筛璧,并打開這個數(shù)據(jù)庫,最后執(zhí)行onCreate方法惹恃,因此夭谤,onCreate方法一般用來在新創(chuàng)建的數(shù)據(jù)庫中建立表,視圖等數(shù)據(jù)庫組件巫糙,也就是說onCreate方法在數(shù)據(jù)庫第一次創(chuàng)建的時候調(diào)用朗儒。

數(shù)據(jù)庫創(chuàng)建會有一個初始化版本為1,數(shù)據(jù)庫升級時需增大這個版本號参淹,這是SQLiteDatabase會調(diào)用OnUpgrade方法醉锄,調(diào)用完后系統(tǒng)會更新數(shù)據(jù)庫版本號,因此在OnUpdate方法中一般先刪除要升級的表浙值,視圖等恳不,然后在創(chuàng)建他們。

總結(jié):如果數(shù)據(jù)庫文件不存在开呐,只有onCreate方法被調(diào)用烟勋,(該方法只會被調(diào)用一次),如果數(shù)據(jù)庫文件存在筐付,并且當(dāng)前版本較高卵惦,執(zhí)行onUpgrade方法更新數(shù)據(jù)庫,并更新版本號家妆。

SQLiteOpenHelper的getReadableDatabase() 和 getWritableDatabase()區(qū)別

Android使用getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用于操作數(shù)據(jù)庫的SQLiteDatabase實例鸵荠。(getReadableDatabase()方法中會調(diào)用getWritableDatabase()方法)

其中g(shù)etWritableDatabase()方法以讀寫方式打開數(shù)據(jù)庫,一旦數(shù)據(jù)庫的磁盤空間滿了伤极,數(shù)據(jù)庫就只能讀而不能寫,倘若使用的是getWritableDatabase()方法就會出錯姨伤。

getReadableDatabase()方法則是先以讀寫方式打開數(shù)據(jù)庫哨坪,如果數(shù)據(jù)庫的磁盤空間滿了,就會打開失敗乍楚,當(dāng)打開失敗后會繼續(xù)嘗試以只讀方式打開數(shù)據(jù)庫当编。如果該問題成功解決,則只讀數(shù)據(jù)庫對象就會關(guān)閉徒溪,然后返回一個可讀寫的數(shù)據(jù)庫對象

demo樣例:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忿偷,一起剝皮案震驚了整個濱河市金顿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鲤桥,老刑警劉巖揍拆,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茶凳,居然都是意外死亡嫂拴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門贮喧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筒狠,“玉大人,你說我怎么就攤上這事箱沦”缒眨” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵谓形,是天一觀的道長运挫。 經(jīng)常有香客問我,道長套耕,這世上最難降的妖魔是什么谁帕? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮冯袍,結(jié)果婚禮上匈挖,老公的妹妹穿的比我還像新娘。我一直安慰自己康愤,他們只是感情好儡循,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著征冷,像睡著了一般择膝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上检激,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天肴捉,我揣著相機與錄音,去河邊找鬼叔收。 笑死齿穗,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饺律。 我是一名探鬼主播窃页,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脖卖?” 一聲冷哼從身側(cè)響起乒省,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畦木,沒想到半個月后袖扛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡馋劈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年攻锰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妓雾。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡娶吞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出械姻,到底是詐尸還是另有隱情妒蛇,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布楷拳,位于F島的核電站绣夺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏欢揖。R本人自食惡果不足惜陶耍,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望她混。 院中可真熱鬧烈钞,春花似錦、人聲如沸坤按。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臭脓。三九已至酗钞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間来累,已是汗流浹背砚作。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佃扼,地道東北人偎巢。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像兼耀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容