日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 系統 > Android > 正文

Android中SQLite數據庫知識點總結

2019-10-21 21:25:24
字體:
來源:轉載
供稿:網友

SQLite 數據庫簡介

SQLite 是一個輕量級數據庫,它是D. Richard Hipp建立的公有領域項目,在2000年發布了第一個版本。它的設計目標是嵌入式的,而且占用資源非常低,在內存中只需要占用幾百kB的存儲空間,這也是Android移動設備采用SQLite數據庫的重要原因之一。

SQLite 是遵守ACID的關系型數據庫管理系統。這里的ACID是指數據庫事務正確執行的4個基本要素,即原子性(Atomicity)、致性 ( Consistency)、 隔離性( lolation). 持久性( Durabilily )。它能夠支持Windows/Linux/UNIX等主流的操作系統,能夠跟很多程序語言,例如Tcl、C#、PHP、 Java等相結合。比起Mysql、PostgreSQL 這兩款開源數據庫管理系統來講,SQLite的處理速度更快。

SQLite 沒有服務器進程,它通過文件保存數據,該文件是跨平臺的,可以放在其他平臺中使用。并且在保存數據時,支持null(零) 、integer (整數)、real (浮點數字) 、text (字符串文本)和blob(二進制對象)5種數據類型。但實際上SQLite也接收varchar(n)、 char(n)、decimal(p,s)等數據類型,只不過在運算或保存時會轉換成對應的5種數據類型。因此,可以將各種類型的數據保存到任何字段中,而不用關心字段聲明的數據類型。

SQLite 數據庫創建

在Android系統中,創建SQLite數據庫是非常簡單的。Android系統推薦使用 SQLiteOpenHelper 的子類創建數據庫,因此需要創建一個繼承自SQLiteOpenHelper,并重寫該類中的onCreate()方法和onUpgrade()方法即可。

為什么要使用SQLiteOpenHelper的子類呢,因為SQLiteOpenHelper為抽象類(abstract),必須使用其子類進行繼承,同時還需要重寫父類的抽象方法,onCreate()方法和onUpgrade()方法都是其父類中的抽象方法。

public class MyHelper extends SQLiteOpenHelper {  @Override  private static String DATABASE_NAME = "alan.db";  private static int DATABASE_VERSION = 2;  public MyHelper(Context context){    super(context,DATABASE_NAME,null,DATABASE_VERSION);     //調用父類的構造方法  }  //數據庫第一次被創建時調用該方法  public void onCreate(SQLiteDatabase db){    //初始化數據庫的表結構,執行一條建表的SQL語句    db.execSQL("CREATE TABLE IF NOT EXISTS person(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), price INTEGER);  }  //當數據庫版本增加時調用  public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){    }}
//SQLiteOpenHelper類的構造函數有四個參數//context代表上下文,name是數據庫名字,factory是游標工廠,一般情況下為null值,version是數據庫版本,軟件在今后的升級中會用到。public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) {  this(context, name, factory, version, null);}

SQLite 數據庫使用

前面介紹了SQLite 數據庫及如何創建數據庫,接下來將針對SQLite數據庫的增、刪、改、查操作進行詳細講解。

一、SQLite 基本操作方法 一

1. 增加一條數據

下面以 alan.db 數據庫中的person表為例,介紹如何使用 SQLiteDatabase對象的insert()方法向表中插入一條數據,示例代碼如下。

public void insert(String name, String price){  SQLiteDatabase db = myHelper.getWritableDatabase(); //獲取可寫入的 SQLiteDatabase 對象  ContentValues values = new ContentValues();  //創建 ContentValues 對象   values.put("name",name);     //將數據添加到ContentValues對象  values.put("price",price);  long id = db.insert("person",null,values); //插入一條數據到person表   db.close();  //關閉數據庫    }

在上述代碼中,通過getWritableDatabase()方 法得到SQLiteDatabase對象,然后獲得ContentValues對象并將數據添加到ContentValues對象中,最后調用inser()方法將數據插入到person表中。

insert()方法接收3個參數,第一個參數是數據表的名稱,第二個參數表示如果發現將要插入的行為空行時,會將這個列名的值設為null,第三個參數為ContentValues對象。ContentValues類類似于Map類,通過鍵值對的形式存入數據,這里的key表示插入數據的列名,value 表示要插入的數據。

需要注意的是,使用完SQLiteDatabase對象后定要調用close()方法關閉,否則數據庫連接會一直存在,不斷消耗內存,當系統內存不足時將獲取不到SQLiteDatabase對象,并且會報出數據庫未關閉異常。

2. 修改一條數據

下面介紹如何使用SQLiteDatabase的update()方法修改person表中的數據,示例代碼如下。

public int update(String name, string price) {  SQLiteDatabase db = myHelper.getwritableDatabasel;  ContentValues values = new ContentValues();  values.put ("price", price);  int number = db.update("person",values,"name =?",new String[]{name});  db.close();  return number;}

在上述代碼中,通過SQLiteDatebase對象db調用update()方法用來修改數據庫中的數據,update()方法接收4個參數,第一個參數表示表名,第二個參數接收一個ContentValues對象,第三個參數可選擇where語句,第四個參數表示whereClause語句中的占位參數列表,這些字符串會替換掉where條件中的 " ? "。

3. 刪除一條數據

下面介紹如何使用SQLiteDatabase的delete()方法修改person表中的數據,示例代碼如下。

public int delete(long id) {   SQLiteDatabase db = myHelper.getwritableDatabasel;   int number = db.delete("person",_id =?,"name =?",new String[]{id});   db.close();   return number; }

從上述代碼中可以看出,刪除數據不同于增加和修改數據,因為刪除數據不需要ContentValues來添加數據。

 

4. 查詢一條數據

在進行數據查詢時使用的是SQLiteDatabase的query0方法,該方法返回的是一個行數集合Cursor。 Cursor 是一個游標接口,提供了遍歷查詢結果的方法,如移動指針方法move(),獲得列值方法getString()等,通過這些方法可以獲取集合中的屬性值以及序號等。

需要注意的是,在使用完Cursor對象后,一定要及時關閉,否則會造成內存泄露。下面介紹如何使用SQLiteDatabase的query()方法查詢數據,示例代碼如下。

public boolean find(long id) {  SQLiteDatabase db = helper .getReadableDatabase ();//獲取可讀取的 SQLiteDatabase 對象Cursor cursor = db.query("person", null,“_id =?", new String[]{id}),null, null, null) ; boolean result = cursor.moveToNext () ; cursor.close(); // 關閉游標 db.close() ; return result; }
//Cursor 中的的重要方法:c.move(int offset); //以當前位置為參考,移動到指定行 c.moveToFirst();  //移動到第一行 c.moveToLast();   //移動到最后一行 c.moveToPosition(int position); //移動到指定行 c.moveToPrevious(); //移動到前一行 c.moveToNext();   //移動到下一行 c.isFirst();    //是否指向第一條 c.isLast();   //是否指向最后一條 c.isBeforeFirst(); //是否指向第一條之前 c.isAfterLast();  //是否指向最后一條之后 c.isNull(int columnIndex); //指定列是否為空(列基數為0) c.isClosed();    //游標是否已關閉 c.getCount();    //總數據項數 c.getPosition();  //返回當前游標所指向的行數 c.getColumnIndex(String columnName);//返回某列名對應的列索引值,如果不存在返回-1 c.getString(int columnIndex);  //返回當前行指定列的值 c·getColumnIndexOrThrow(String columnName)  //從零開始返回指定列名稱,如果不存在將拋出IllegalArgumentException 異常。c.close() //關閉游標,釋放資源

在上述代碼中,介紹了使用query()方法查詢person表中的數據,query()方法接收7個參數,第一個參數表示表名稱,第二個參數表示查詢的列名,第三個參數接收查詢條件子句,第四個參數接收查詢子句對應的條件值,第五個參數表示分組方式,第六個參數接收having條件,即定義組的過濾器,第七個參數表示排序方式。

二、SQLite 基本操作方法 二

這種操作方法類似于執行SQL語句 (語法和SQL server類似)。

1. 增加一條數據

 db.execSQL("insert into perosn (name, price) values(?,?)",new String[]{name,price})

2. 修改一條數據

db.execSQL("update person set price =? where name =?", new String[]{price,name});

3. 刪除一條數據

db.execSQL("delete from person where _id = ?",new String[]{id});

4. 查詢一條數據

Cursor cursor = db.rawQuery("select _id,name,price from person where id =?",new String[]{id});

從上述代碼可以看出,查詢操作與增、刪、改操作有所不同,前面三個操作都是通過execSQL()方法執行SQL語句,而查詢操作使用的是rawQuery()方法。這是因為查詢數據庫會返回一個結果集Cursor,而execSQL()方法則沒有返回值。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产午夜精品视频免费不卡69堂| 国产福利免费观看| 国产精品福利视频一区二区三区| 中文精品电影| 日本啊v在线| 在线观看中文字幕一区| 日韩高清在线一区二区| 亚洲综合日韩中文字幕v在线| 国产99在线 | 亚洲| 欧美日韩高清| 日韩午夜高潮| 日韩在线视频免费观看高清中文 | 日本中文字幕在线观看| 日韩在线观看精品| 麻豆精品视频入口| 欧美日韩国产综合视频在线观看| 亚洲一区在线观看网站| 亚洲一区视频在线观看视频| 成人精品视频一区| 亚洲综合视频一区| 午夜国产视频 | 大香一本蕉伊线亚洲网| 精品久久蜜桃| 久久久精品网| 欧美日韩精品欧美日韩精品一| 日韩不卡在线观看| 日韩欧美三级视频| 亚洲一区视频在线观看视频| 91精品国产自产在线| 久久精品日韩无码| 久久在线91| a视频免费在线观看| 蜜桃久久av一区| 欧美日韩在线不卡一区| 精品一二三区视频| 一区二区欧美国产| 一级日本免费的| 婷婷久久综合九色国产成人| 日韩av二区| 国产资源中文字幕| 亚洲伊人婷婷| 久久精品一级爱片| 中文字幕伊人| 亚洲成在线观看| 不卡一区2区| 美日韩精品免费视频| 99国产一区| 国产无套粉嫩白浆在线2022年| 亚洲福利在线看| 午夜视频在线观看一区| 在线观看国产一级片| 国产福利一区二区在线精品| www中文字幕| 中文字幕国产视频| 日韩在线视频免费观看高清中文| 日韩精品视频在线| 久久久精品日韩| 中文字幕第一页在线播放| 91久久久精品| 国产三级第一页| 在线观看国产一区| 91精品国产91久久久久| 精品人妻二区中文字幕| 国产性一级片| 久久人人88| 一区二区三区精品99久久| 国产在线一在线二| 亚洲国产欧美日韩在线| 91精品在线国产| 欧美日韩国产999| 在线精品日韩| 中文字幕在线视频久| 精品久久久网| 91精品国产91久久久久久不卡 | 欧美日韩国产综合视频在线观看中文| 久久激情一区| 中文字幕日韩精品在线| www日韩在线观看| 欧洲精品二区| 精品对白一区国产伦| 亚洲国产欧美久久| 欧美三级日韩在线| 韩国v欧美v日本v亚洲| 欧美在线视频一区二区| 精品国产综合久久| 本道综合精品| 欧美日韩综合色| 色偷偷一区二区三区| 欧美婷婷久久| 69堂精品视频在线播放| 欧洲精品在线一区| 蜜桃久久久久| 日韩欧美综合视频| 国产一区不卡精品| 亚洲 欧美 日韩系列| 中文字幕日韩在线视频| 精品人妻一区二区三区视频| 色综合天天综合网天天狠天天| 国产一级久久久| 日韩欧美高清在线| 玖玖在线免费视频| 日韩不卡高清视频| 亚洲v中文字幕| 日韩视频1区| 免费在线国产| 色www精品视频在线观看| 国产一级在线播放| 日韩在线视频二区| 中文字幕国产日韩| 在线免费播放av| 91精品在线免费观看| 激情五月综合| 亚洲欧美伊人| 高清在线一区| av高清一区| 国产不卡在线观看视频| 一区二区在线观看不卡| 国产成人精品999在线观看| 国产欧美日韩精品综合| 日韩亚洲不卡在线| 久久手机免费观看| 99久久www免费| 日韩在线a电影| 欧美日韩精品免费看| 日韩视频一区在线观看| 国产高清精品二区| 欧美日韩精品国产| 欧美久久在线观看| 国产欧美日韩高清| 欧美91精品| 亚洲欧美999| 91精品国产高清久久久久久| 91精品国产欧美日韩| 欧美久久久久久蜜桃| 久久久精品福利| 1区不卡电影| 欧美日韩亚洲视频| 999精品网| 蜜臀91精品国产高清在线观看| 最近高清中文在线字幕在线观看| 精品人妻二区中文字幕| 国产视频一区三区| 国产成人综合av| 国产一二三四| 欧美三级视频在线| 中文字幕线观看| 日韩av中文字幕一区| 日韩国产在线观看一区| 中文字幕欧美日韩在线| 日韩亚洲不卡在线| 亚洲欧洲日产国码av系列天堂| 91精品国产91久久久| 在线一区av| 欧美激情一区二区在线| av中文网站| 中文字幕线观看| 日韩精品欧美在线| 精品视频久久| 中文字幕成人乱码在线电影| 亚洲免费在线视频一区 二区| 久久99久久99精品中文字幕| 日韩精品一区二区三区视频播放| 国产亚洲污的网站| 天天综合天天| 亚洲图片小说综合| wwww亚洲| 日韩不卡在线播放| 99久久精品国产亚洲| 日韩午夜高潮| 国产三级在线播放| 视频在线一区二区| 精品调教chinesegay| 日韩精品视频在线观看视频| 中文字幕日韩高清| 国产一区在线不卡| 国产福利不卡| www日韩欧美| 91精品久久久久久久久| 久久精品一级爱片| 欧美日韩精品综合在线| 精品日韩视频在线观看| 91精品在线观| 人妻一区二区三区免费| 日韩精品视频在线观看视频| 欧美三级日韩在线| 美日韩精品免费视频| 国产福利在线看| 日韩欧美在线综合网| 亚洲区中文字幕| 国产三级在线| 久久99久久久欧美国产| 欧美日韩国产综合网| 久久视频www| 欧美日韩视频在线| 91精品在线免费观看| aaa大片在线观看| 一区二区国产在线| 国产99在线 | 亚洲| 黄色在线播放网站| 亚洲一区激情| 欧美中文字幕在线观看视频| 成人一区二区不卡免费| 亚洲福利视频在线| 天天综合天天添夜夜添狠狠添| 亚洲免费看av| 精品国产999| 欧美 亚洲 精品 三区| 91精品免费看| 日韩欧美久久久| 国产1区在线| 不卡视频一区二区三区| 亚洲免费精品| 午夜国产福利在线观看| 天堂在线中文| 黄色一级大片在线免费看国产一| 中文字幕在线中文字幕二区| 欧美日韩在线国产| 欧美一卡2卡3卡4卡| 精品久久久久久无| 日韩高清不卡在线| 亚州福利视频| 日本啊v在线| 亚洲理论中文字幕| 国产三级视频网站| 91精品在线国产| 欧美日韩国产中字| 亚洲一区视频在线观看视频| 在线免费视频一区二区| 久久精品免费在线观看| 亚洲 欧美综合在线网络| xxxxx性| 精品视频999| 国产网站av| 日韩在线视频免费观看高清中文| 中文字幕最新精品| 日韩欧美国产成人精品免费| 国产激情三区| 国产黄色高清在线| 91精品国产调教在线观看| 亚洲免费精品| 日韩欧中文字幕| 日韩精品在线观看视频| 欧美日韩视频免费播放| 国产对白在线| 中文字幕在线看视频国产欧美| 91精品国产综合久久久久久| 欧美 日韩 国产 在线| 欧美人妻一区二区三区| 中文字幕视频在线观看| 欧美日韩在线视频免费观看| 99视频在线看| 日韩精品中文在线观看| 久久中文精品| 亚洲国内精品视频| 91xxx在线观看| 日韩av一区在线| 欧美日韩精品在线视频| 亚洲视频 中文字幕| 日韩精品一二三四区| 一区视频在线播放| 亚洲一卡二卡在线观看| 欧美变态tickling挠脚心| 精品激情国产视频| 日韩精品乱码av一区二区| 精品久久久三级| 日韩精品免费视频一区二区三区| 日韩免费不卡avV| 日韩欧美三级| 亚洲免费精品视频| 日韩视频免费直播| 拍真实国产伦偷精品| 亚洲欧美韩国综合色| 中文国产字幕在线观看| 国产午夜精品全部视频播放| 最近中文字幕第一页| 一区二区高清视频| 欧美日韩在线播放三区四区| 国产91久久久久蜜臀青青天草二 | 国产日韩精品在线| 日韩一级网站| 国产在线观看色| 欧美日韩中文在线| 日韩精品在线播放| 中文字幕亚洲视频| 精品福利二区三区| 91精品电影| 亚洲综合在线中文字幕| 国产福利一区二区| 综合激情国产一区| 久久久精品午夜少妇| 成年人黄国产| av免费在线网站| 先锋男人资源站| 免费在线视频一区二区| 久久韩国免费视频| 日韩中文字幕观看| 国产欧美日韩中文| 日韩在线不卡一区| 欧美三级日韩三级| 日本亚洲欧美三级| 欧美日韩精品区| 国产一区三区三区| 国产小视频在线观看| 美国av一区二区| 亚洲一区二区三区精品中文字幕| 在线观看免费国产小视频| 91精品综合久久| 免费视频久久| 亚洲黄色www| 国产三级在线| 51精品免费网站| 在线国产99| 欧美日韩精品高清| 欧美一卡2卡3卡4卡| 国产福利不卡| 色综合久久88色综合天天免费| 亚洲高清视频在线| 欧美日韩视频免费播放| 91精品国产综合久久久久久| 97久久精品午夜一区二区| 一区二区三区在线免费| 中文精品在线| 国产婷婷色一区二区三区| 欧美不卡123| 日韩在线视频免费观看高清中文| 日本不卡高清视频一区| 国产中文在线播放| 亚洲综合视频一区| 中文字幕精品视频| 久久 天天综合| 国产一区日韩| 日韩一级中文字幕| 久久精品一二三| 亚洲一二三不卡| 精品国产91| 天天摸日日摸狠狠添| 日韩www在线| 午夜亚洲一区| 精品久久九九| 日本熟女一区二区| 97久久精品午夜一区二区| 国产中文在线观看| 中文字幕国产日韩| 国产亚洲一级| 精品人妻二区中文字幕| 欧美一级欧美三级在线观看| 视频一区二区国产| 中文字幕在线视频精品| 日韩亚洲不卡在线| 伊人永久在线| 国产黄色在线播放| 国产欧美日韩中文字幕| 中文字幕视频一区二区三区久| 日韩激情一区| 99综合视频| 一区三区二区视频| 亚洲精品欧美二区三区中文字幕| a视频在线播放| 日韩av中文字幕一区| 日韩三级高清在线| 国产三级在线观看视频| 日韩一级中文字幕| wwwav91com| 婷婷中文字幕一区| 中文字幕在线观看亚洲| 一区二区三区久久| 欧美日韩综合在线| 国产日产一区二区| 欧美日韩高清| 亚洲va中文字幕| 欧美日韩中文字幕在线观看| 免费在线观看国产黄| 日韩中文字幕| 欧美 日韩 国产在线观看| 1区2区3区在线视频| av一区在线| 91精品在线观看入口| 成片免费观看| 黄色一区二区在线观看| 伊人中文字幕在线观看| 亚洲欧美小说国产图片| 欧美日韩亚州综合| 亚洲 欧美 日韩系列| 久久91精品久久久久久秒播| 中文字幕第一页在线播放| 一区二区在线视频播放| 不卡在线视频| 亚洲高清视频一区| 日韩视频一区在线观看| 国产一级在线免费观看| 精品999在线| 国产亚洲一区字幕| 欧美国产一级片| 欧美日韩中文字幕日韩欧美| 99日韩精品| 中文字幕精品一区二| 91精品国产自产观看在线| 亚洲天堂国产视频| 久99久视频| 欧美另类久久久品|