日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

【转】Android开发之数据库SQL

發(fā)布時(shí)間:2024/1/17 Android 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】Android开发之数据库SQL 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?android中的應(yīng)用開發(fā)很難避免不去使用數(shù)據(jù)庫,這次就和大家聊聊android中的數(shù)據(jù)庫操作。

?

一、android內(nèi)的數(shù)據(jù)庫的基礎(chǔ)知識介紹

?

???????1.用了什么數(shù)據(jù)庫


??????????? android中采用的數(shù)據(jù)庫是SQLite這個(gè)輕量級的嵌入式開源數(shù)據(jù)庫,它是用c語言構(gòu)建的。相關(guān)簡介可以從鏈接查看。

?

???????2.數(shù)據(jù)庫基本知識觀花


??????????? 對于一些和我一樣還沒有真正系統(tǒng)學(xué)習(xí)數(shù)據(jù)庫技術(shù)的同學(xué)來說,把SQL92標(biāo)準(zhǔn)中的一些基本概念、基本語句快速的了解一下,是很有必要的,這樣待會(huì)用Android的database相關(guān)方法去執(zhí)行一些數(shù)據(jù)庫語句時(shí)就不會(huì)茫然了。

?

???????①數(shù)據(jù)庫的基本結(jié)構(gòu)——表格

?

???????表格是數(shù)據(jù)庫中儲(chǔ)存資料的基本架構(gòu)。表格被分為欄位 (column) 及列位 (row)。每一列代表一筆資料,而每一欄代表一筆資料的一部份。舉例來說,如果我們有一個(gè)記載顧客資料的表格,那欄位就有可能包括姓、名、地址、城市、國家、生日...等等。每一個(gè)表格擁有一個(gè)獨(dú)一無二的名字(Table Name)以便能夠讓用戶定位到它上面。一個(gè)典型的表格結(jié)構(gòu)如下:

?

???Store_Information?表格

store_nameSalesDate
Los Angeles$1500Jan-05-1999
San Diego$250Jan-07-1999
Los Angeles$300Jan-08-1999
Boston$700Jan-08-1999

?該表格的表格名字為Store_Information,一共有三個(gè)欄位,分別為store_name , Sales , Data ,已經(jīng)錄入了四筆數(shù)據(jù)所以有四個(gè)列位。

?

???????②關(guān)于數(shù)據(jù)類型

?

?????? 和其他的數(shù)據(jù)庫不同的是,sqlite是無類型的。也就是當(dāng)你創(chuàng)建一個(gè)表格時(shí),無需對每一個(gè)欄位要存儲(chǔ)的數(shù)據(jù)的類型進(jìn)行聲明,當(dāng)你在給表格增加數(shù)據(jù)條目時(shí),sqlite會(huì)自動(dòng)找到存入的數(shù)據(jù)的類型。

?

?????? SQLite允許忽略數(shù)據(jù)類型,但是,仍然建議在Create Table語句中指定數(shù)據(jù)類型,因?yàn)閿?shù)據(jù)類型有利于增強(qiáng)程序的可讀性。SQLite支持常見的數(shù)據(jù)類型,如VARCHAR、NVARCHAR、TEXT、 INTEGER、FLOAT、BOOLEAN、CLOB、BLOB、TIMESTAMP、NUMERIC、VARYING、CHARACTER、 NATl0NAI, VARYINGCHARACTER。這些數(shù)據(jù)類型都是SQL92標(biāo)準(zhǔn)中規(guī)定的標(biāo)準(zhǔn)數(shù)據(jù)庫數(shù)據(jù)類型,想要有更近一步了解,請參看下表。

?

?

SQL數(shù)據(jù)庫數(shù)據(jù)類型詳解


?

數(shù)據(jù)類型類型描 ????????????述
bit整型bit 數(shù)據(jù)類型是整型,其值只能是0、1或空值。這種數(shù)據(jù)類型用于存儲(chǔ)只有兩種可能值的數(shù)據(jù),如Yes 或No、True 或Fa lse 、On 或Off
int整型int 數(shù)據(jù)類型可以存儲(chǔ)從- 231(-2147483648)到231 (2147483 647)之間的整數(shù)。存儲(chǔ)到數(shù)據(jù)庫的幾乎所有數(shù)值型的數(shù)據(jù)都可以用這種數(shù)據(jù)類型。這種數(shù)據(jù)類型在數(shù)據(jù)庫里占用4個(gè)字節(jié)
smallint整型smallint 數(shù)據(jù)類型可以存儲(chǔ)從- 215(-32768)到215(32767)之間的整數(shù)。這種數(shù)據(jù)類型對存儲(chǔ)一些常限定在特定范圍內(nèi)的數(shù)值型數(shù)據(jù)非常有用。這種數(shù)據(jù)類型在數(shù)據(jù)庫里占用2 字節(jié)空間
tinyint整型tinyint 數(shù)據(jù)類型能存儲(chǔ)從0到255 之間的整數(shù)。它在你只打算存儲(chǔ)有限數(shù)目的數(shù)值時(shí)很有用。 這種數(shù)據(jù)類型在數(shù)據(jù)庫中占用1 個(gè)字節(jié)
numeric精確數(shù)值型numeric數(shù)據(jù)類型與decimal 型相同
decimal精確數(shù)值型decimal 數(shù)據(jù)類型能用來存儲(chǔ)從-1038-1到1038-1的固定精度和范圍的數(shù)值型數(shù)據(jù)。使用這種數(shù)據(jù)類型時(shí),必須指定范圍和精度。 范圍是小數(shù)點(diǎn)左右所能存儲(chǔ)的數(shù)字的總位數(shù)。精度是小數(shù)點(diǎn)右邊存儲(chǔ)的數(shù)字的位數(shù)
money貨幣型money 數(shù)據(jù)類型用來表示錢和貨幣值。這種數(shù)據(jù)類型能存儲(chǔ)從-9220億到9220 億之間的數(shù)據(jù),精確到貨幣單位的萬分之一
smallmoney貨幣型smallmoney 數(shù)據(jù)類型用來表示錢和貨幣值。這種數(shù)據(jù)類型能存儲(chǔ)從-214748.3648 到214748.3647 之間的數(shù)據(jù),精確到貨幣單位的萬分之一
float近似數(shù)值型float 數(shù)據(jù)類型是一種近似數(shù)值類型,供浮點(diǎn)數(shù)使用。說浮點(diǎn)數(shù)是近似的,是因?yàn)樵谄浞秶鷥?nèi)不是所有的數(shù)都能精確表示。浮點(diǎn)數(shù)可以是從-1.79E+308到1.79E+308 之間的任意數(shù)
real近似數(shù)值型real 數(shù)據(jù)類型像浮點(diǎn)數(shù)一樣,是近似數(shù)值類型。它可以表示數(shù)值在-3.40E+38到3.40E+38之間的浮點(diǎn)數(shù)
datetime日期時(shí)間型datetime數(shù)據(jù)類型用來表示日期和時(shí)間。這種數(shù)據(jù)類型存儲(chǔ)從1753年1月1日到9999年12月3 1日間所有的日期和時(shí)間數(shù)據(jù), 精確到三百分之一秒或3.33毫秒
Smalldatetime日期時(shí)間型smalldatetime 數(shù)據(jù)類型用來表示從1900年1月1日到2079年6月6日間的日期和時(shí)間,精確到一分鐘
cursor特殊數(shù)據(jù)型cursor 數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,它包含一個(gè)對游標(biāo)的引用。這種數(shù)據(jù)類型用在存儲(chǔ)過程中,而且創(chuàng)建表時(shí)不能用
timestamp特殊數(shù)據(jù)型timestamp 數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,用來創(chuàng)建一個(gè)數(shù)據(jù)庫范圍內(nèi)的唯一數(shù)碼。 一個(gè)表中只能有一個(gè)timestamp列。每次插入或修改一行時(shí),timestamp列的值都會(huì)改變。盡管它的名字中有“time”, 但timestamp列不是人們可識別的日期。在一個(gè)數(shù)據(jù)庫里,timestamp值是唯一的
Uniqueidentifier特殊數(shù)據(jù)型Uniqueidentifier數(shù)據(jù)類型用來存儲(chǔ)一個(gè)全局唯一標(biāo)識符,即GUID。GUID確實(shí)是全局唯一的。這個(gè)數(shù)幾乎沒有機(jī)會(huì)在另一個(gè)系統(tǒng)中被重建??梢允褂肗EWID 函數(shù)或轉(zhuǎn)換一個(gè)字符串為唯一標(biāo)識符來初始化具有唯一標(biāo)識符的列
char字符型char數(shù)據(jù)類型用來存儲(chǔ)指定長度的定長非統(tǒng)一編碼型的數(shù)據(jù)。當(dāng)定義一列為此類型時(shí),你必須指定列長。當(dāng)你總能知道要存儲(chǔ)的數(shù)據(jù)的長度時(shí),此數(shù)據(jù)類型很有用。例如,當(dāng)你按郵政編碼加4個(gè)字符格式來存儲(chǔ)數(shù)據(jù)時(shí),你知道總要用到10個(gè)字符。此數(shù)據(jù)類型的列寬最大為8000 個(gè)字符
varchar字符型varchar數(shù)據(jù)類型,同char類型一樣,用來存儲(chǔ)非統(tǒng)一編碼型字符數(shù)據(jù)。與char 型不一樣,此數(shù)據(jù)類型為變長。當(dāng)定義一列為該數(shù)據(jù)類型時(shí),你要指定該列的最大長度。 它與char數(shù)據(jù)類型最大的區(qū)別是,存儲(chǔ)的長度不是列長,而是數(shù)據(jù)的長度
text字符型text 數(shù)據(jù)類型用來存儲(chǔ)大量的非統(tǒng)一編碼型字符數(shù)據(jù)。這種數(shù)據(jù)類型最多可以有231-1或20億個(gè)字符
nchar統(tǒng)一編碼字符型nchar 數(shù)據(jù)類型用來存儲(chǔ)定長統(tǒng)一編碼字符型數(shù)據(jù)。統(tǒng)一編碼用雙字節(jié)結(jié)構(gòu)來存儲(chǔ)每個(gè)字符,而不是用單字節(jié)(普通文本中的情況)。它允許大量的擴(kuò)展字符。此數(shù)據(jù)類型能存儲(chǔ)4000種字符,使用的字節(jié)空間上增加了一倍
nvarchar統(tǒng)一編碼字符型nvarchar 數(shù)據(jù)類型用作變長的統(tǒng)一編碼字符型數(shù)據(jù)。此數(shù)據(jù)類型能存儲(chǔ)4000種字符,使用的字節(jié)空間增加了一倍
ntext統(tǒng)一編碼字符型ntext 數(shù)據(jù)類型用來存儲(chǔ)大量的統(tǒng)一編碼字符型數(shù)據(jù)。這種數(shù)據(jù)類型能存儲(chǔ)230 -1或?qū)⒔?0億個(gè)字符,且使用的字節(jié)空間增加了一倍
binary二進(jìn)制數(shù)據(jù)類型binary數(shù)據(jù)類型用來存儲(chǔ)可達(dá)8000 字節(jié)長的定長的二進(jìn)制數(shù)據(jù)。當(dāng)輸入表的內(nèi)容接近相同的長度時(shí),你應(yīng)該使用這種數(shù)據(jù)類型
varbinary二進(jìn)制數(shù)據(jù)類型varbinary 數(shù)據(jù)類型用來存儲(chǔ)可達(dá)8000 字節(jié)長的變長的二進(jìn)制數(shù)據(jù)。當(dāng)輸入表的內(nèi)容大小可變時(shí),你應(yīng)該使用這種數(shù)據(jù)類型
image二進(jìn)制數(shù)據(jù)類型image 數(shù)據(jù)類型用來存儲(chǔ)變長的二進(jìn)制數(shù)據(jù),最大可達(dá)231-1或大約20億字節(jié)

?

你或許已經(jīng)在納悶了,為什么之前的數(shù)據(jù)類型是大寫的,而到了這個(gè)表格就變成了小寫的。其實(shí)這是sqlite的一個(gè)不得不提的特性:sqlite是大小寫不敏感的!這一特性對于很多c語言fans來說是很不習(xí)慣的。

?

????????③數(shù)據(jù)庫的基本操作語句


?

?????? 其實(shí)這個(gè)還是SQL92標(biāo)準(zhǔn)中的一部分,只是不同的數(shù)據(jù)庫會(huì)有一點(diǎn)點(diǎn)的不同而已,下面就對在android中最常用的幾個(gè)操作語句給以概述,詳細(xì)介紹請參看SQL語句簡單介紹。

?

(1)CREATE TABLE

???????由于創(chuàng)建一個(gè)表格,基本使用語法結(jié)構(gòu)是:

CREATE TABLE "表格名" ("欄位1" 保存資料類型 ,?"欄位3" ?保存資料類型 ?,?"欄位2" 保存資料類型 .....);

?????? 例如我要?jiǎng)?chuàng)建剛才的Store_Information表格,就可以這樣:

CREATE TABLE? Store_Information?(Store_Name char[50] ,?Sales long , Date date?); ?

?????? 需要提示的是,這里還是聲明了數(shù)據(jù)類型。而且不難發(fā)現(xiàn),c語言構(gòu)建的sqlite自身也有一些c語言的性格(例如一個(gè)完整語句后的分號)。

?

?

(2)SELECT

用于將資料從數(shù)據(jù)庫中的表格內(nèi)選出,基本語法結(jié)構(gòu)為:

SELECT "欄位名" FROM "表格名" ;

例如我想將 Store_Information 里面的store_name 選出,則可以這樣:

SELECT store_name FROM Store_Information ;

?

這句執(zhí)行后就會(huì)顯示如下的信息:

?

?

store_name
Los Angeles
San Diego
Los Angeles
Boston

?

?

好了,效果一目了然。

?

(3)SELECT語句可以添加條件來縮小選擇結(jié)果:

?

?

去掉重復(fù)的結(jié)果:

?

SELECT DISTINCT "欄位名"?FROM "表格名"?

?

例如將剛才的語句改為:

?

SELECT?DISTINCT?store_name FROM Store_Information ;

?

則顯示的結(jié)果為:


?

store_name

Los Angeles
San Diego
Boston

?

實(shí)現(xiàn)有條件的篩選:

?

SELECT "欄位名" FROM "表格名" WHERE "條件語句" ;

?

條件語句和c語言中的類似,只不過用AND表示“且”,OR表示“或”。

?

例如對表執(zhí)行如下語句:

?

SELECT store_name?FROM Store_Information?WHERE Sales > 1000 ;

?

則顯示結(jié)果為:

?

?

?

store_name?

?

Los Angeles

?

?

其中WHERE語句用的較多,因?yàn)樗梢詫?shí)現(xiàn)自定義條件的使用和多條件的組合。

?

(4)INSERT INTO

?

在表格中加入資料——可以實(shí)現(xiàn)一筆的加入和多筆的加入。

?

加入一筆:

INSERT INTO "表格名" ("欄位1", "欄位2", ...)?VALUES ("值1", "值2", ...);


加入多筆:

INSERT INTO "待加入數(shù)據(jù)的表格" ("欄位1", "欄位2", ...)?SELECT "欄位3", "欄位4", ...?FROM "被加入的表格" ;

?

加入多筆其實(shí)就是將另一個(gè)表格加入到現(xiàn)有表格中。

?

(5)UPDATE

?

用于修改表格中的數(shù)據(jù),語法結(jié)構(gòu)為:

?

UPDATE "表格名"?SET "欄位1" = [新值]?WHERE {條件};

?

例如:

?

UPDATE Store_Information?SET Sales = 500?WHERE store_name = "Los Angeles"?AND Date = "Jan-08-1999" ;

?

具體是什么意思的話就不說了,你懂的~~~

?

(6)DELETE FROM

?

刪除表格中的某些數(shù)據(jù),語法結(jié)構(gòu)為:

?

DELETE FROM "表格名"?WHERE {條件} ;

?

滿足條件的所有資料都會(huì)被刪除掉。

?

?

?

?

二、如何在android中調(diào)用數(shù)據(jù)庫資源


在android中主要有兩種方法來實(shí)現(xiàn)對數(shù)據(jù)庫的訪問,一種是adb shell方式,另一種是通過相關(guān)的android 的java類來間接的對數(shù)據(jù)庫來進(jìn)行操作。其中前者主要用于在開發(fā)過程中進(jìn)行調(diào)試等工作,后者則為android中主要的使用數(shù)據(jù)庫的方式。

下面就對這兩種方式進(jìn)行一個(gè)簡要的介紹。

?

1.adb shell方式

?

說白了,adb shell 就是一個(gè)android模擬器的后臺(tái)資源調(diào)用器(個(gè)人理解啦~~)。它的操作方式和命令提示符差不多——以命令行的方式進(jìn)行。

?

既然是模擬器的后臺(tái)資源調(diào)用器,那當(dāng)然得先打開android模擬器了。

?

打開模擬器后,再打開命令提示符,在里面輸入adb shell,這時(shí)會(huì)出現(xiàn)一個(gè)#號(懂linux的同學(xué)懂的),具體效果如下:

?

然后你就可以像在linux下進(jìn)行shell命令的執(zhí)行了。

?

接著輸入 cd data/data/ 并執(zhí)行,再執(zhí)行l(wèi)s,則會(huì)顯示一些安裝的軟件的工程包名,效果如下:

?

?

其實(shí)這在模擬器中是以一個(gè)個(gè)文件夾的形式存在的,所以你可以用cd命令進(jìn)入它。例如我進(jìn)入一個(gè)后,再用ls命令顯示里面的內(nèi)容:

?

?

該文件夾內(nèi)又存在databases、 lib等文件夾(如果沒有databases的話可以自己手動(dòng)用mkdir命令創(chuàng)建一個(gè))。而這個(gè)databases文件夾就是這個(gè)應(yīng)用的數(shù)據(jù)庫文件的所在地,cd進(jìn)入后,應(yīng)該會(huì)看到里面有一個(gè)或多個(gè).db格式的文件(其實(shí)sqlite對文件的名字沒有特殊要求,你用.txt等其他的格式也可以,但推薦.db)。如果沒有db文件的話,可以用如下命令創(chuàng)建:sqlite3 mydata.db。這樣就會(huì)在databases里面生成了一個(gè)數(shù)據(jù)庫文件。如果已存在,可以直接用sqlite3命令調(diào)用該數(shù)據(jù)庫文件,命令為 sqlite3 mydata.db(其實(shí)就是和剛才的命令一個(gè)樣)。接下來你就會(huì)看到:

?

?

在sqlite>后面就可以執(zhí)行你的sql語句了。下面執(zhí)行了一些簡單的語句:

?

?

好了,adb shell的方式介紹到這里。

?

2.通過android中的相關(guān)java類

?

?

????? Android中對數(shù)據(jù)庫進(jìn)行操作的相關(guān)的借口、類等都在andorid.database和android.database.sqlite兩個(gè)包里面。里面存在著很多的與數(shù)據(jù)庫操作相關(guān)的類,但是在平時(shí)普通的開發(fā)中最經(jīng)常遇到的僅僅就是那幾個(gè)類而已,所以在這里我就省去通篇的介紹,對一些常用的接口、類做一下簡介。

?

SQLiteDatabase(android.database.sqlite.SQLiteDatabase)

?

文檔信息:

public class

SQLiteDatabase

?

Exposes methods to manage a SQLite database.SQLiteDatabase has methods to?create, delete, execute SQLcommands, and perform other common database management tasks.atabase names must be unique within an application, not across all applications.

?

?

簡介:

這個(gè)是在android中數(shù)據(jù)庫操作使用最頻繁的一個(gè)類。通過它可以實(shí)現(xiàn)數(shù)據(jù)庫的創(chuàng)建或打開、創(chuàng)建表、插入數(shù)據(jù)、刪除數(shù)據(jù)、查詢數(shù)據(jù)、修改數(shù)據(jù)等操作。

?

重要方法介紹:

?

(1)public static?SQLiteDatabase?openOrCreateDatabase?(File?file,?SQLiteDatabase.CursorFactory?factory)

?? ??public static?SQLiteDatabase?openOrCreateDatabase?(String?path,?SQLiteDatabase.CursorFactory?factory)

這個(gè)方法用于打開或創(chuàng)建一個(gè)數(shù)據(jù)庫(對于sqlite來說,就是打開或產(chǎn)生一個(gè)數(shù)據(jù)庫文件),參數(shù)中的File類就是java中表示系統(tǒng)文件路徑的File類,而SQLiteDatabase.CursorFactory則是一個(gè)產(chǎn)生Cursor對象的工廠類(Cursor接口將在后面介紹到)。


(2)public?long?insert?(String?table,?String?nullColumnHack,?ContentValues?values)

看到它的名字以及sql中的相關(guān)語句你不難猜到這個(gè)方法用于在數(shù)據(jù)庫中加入數(shù)據(jù)。ContentValue類似于java中HashMap類,用于以鍵值對的方式保存數(shù)據(jù)。


(3)public?int?delete?(String?table,?String?whereClause,?String[]?whereArgs)

不用說了,用于刪除表中的數(shù)據(jù)。


(4)public?Cursor?query?(booleandistinct,?String?table,?String[]?columns,?String?selection,?String[]?selectionArgs,?String?groupBy,?String?having,?String?orderBy,?String?limit)

名字很長是吧,它的功能也很強(qiáng)大,用于查詢數(shù)據(jù)庫中的數(shù)據(jù)。


(5)public?int?update?(String?table,?ContentValues?values,?String?whereClause,?String[]?whereArgs)

用于修改數(shù)據(jù)。根據(jù)傳入?yún)?shù)的名字可以對使用方法略知一二。


(6)public?void?execSQL?(String?sql,?Object[]?bindArgs)

?? ??public?void?execSQL?(String?sql)

這是我個(gè)人認(rèn)為最為重要的方法。這個(gè)方法用于執(zhí)行你用String表示的非查詢(因?yàn)樗粫?huì)返回一個(gè)Cursor對象)的sql語句,例如CREATE,SELECT等。遺憾的是現(xiàn)在尚無法一次調(diào)用該方法來執(zhí)行用“;”分開的多條sql語句。第二個(gè)重寫方法使用的更多些。

另外在此提問:第一個(gè)重寫方法中bindArgs表示的是一些什么,用來做什么用,知道的同學(xué)可以告訴我下,謝謝!


(7)public?void?close?()

用來關(guān)閉數(shù)據(jù)庫并釋放數(shù)據(jù)庫占用的相關(guān)資源。


?

SQLiteOpenHelper (android.database.sqlite.SQLiteOpenHelper)

?

文檔信息:

public?abstract?class

SQLiteOpenHelper

A helper class to manage database creation and version management. You create a subclass implementingonCreate(SQLiteDatabase),?onUpgrade(SQLiteDatabase, int, int)?and optionally?onOpen(SQLiteDatabase), and this class takes care of opening the database if it exists, creating it if it does not, and upgrading it as necessary. Transactions are used to make sure the database is always in a sensible state.

?

簡介:

正如它的名字所表述的一樣,這個(gè)抽象類是一個(gè)輔助類(Helper),用來打開(若數(shù)據(jù)庫已存在)或創(chuàng)建數(shù)據(jù)庫的。關(guān)于抽象類我們都知道,如果要使用它,一定是繼承它。所以使用它都是通過自己定義一個(gè)類繼承于它,并實(shí)現(xiàn)onCreate(SQLiteDatabase)?,?onUpgrade(SQLiteDatabase, int, int)?,?onOpen(SQLiteDatabase)三個(gè)方法。

在我看來,所謂的輔助類,其實(shí)就是充當(dāng)了一個(gè)封裝器——也就是說用于對其輔助的類實(shí)現(xiàn)一個(gè)java上的封裝。在這里,SQLiteOpenHelper就是用來對SQLiteDatabase進(jìn)行一個(gè)封裝處理。初學(xué)的同學(xué)想要進(jìn)一步理解的話可以先看看什么是封裝。

?

它包含的方法如下:

?

(1)synchronized?void?close()

????? 關(guān)閉任何已開啟的數(shù)據(jù)庫對象。

(2)synchronized?SQLiteDatabase?getReadableDatabase()

????? 創(chuàng)建或打開一個(gè)僅僅可讀的(read-only)數(shù)據(jù)庫。

(3)synchronized?SQLiteDatabase?getWritableDatabase()

創(chuàng)建或打開一個(gè)可讀可寫的數(shù)據(jù)庫。 (4)abstract?void?onCreate(SQLiteDatabase?db) 當(dāng)數(shù)據(jù)庫被第一次創(chuàng)建時(shí)被調(diào)用的的方法(類似于Activity的onCreate())。 (5)void?onOpen(SQLiteDatabase?db) 數(shù)據(jù)庫已經(jīng)被成打開后被調(diào)用。 (6)abstract?void?onUpgrade(SQLiteDatabase?db, int?oldVersion, int?newVersion) 當(dāng)數(shù)據(jù)庫需要被更改(更新)時(shí)被調(diào)用。

?

Cursor(android.database.Cursor)

?

文檔信息:

public interface

Cursor

This interface provides random read-write access to the result set returned by a database query.

?

簡介:

Cursor沒有構(gòu)造方法,只能通過query方法獲得。

前面提到了,execSQL方法無法執(zhí)行與查詢相關(guān)的sql語句,是因?yàn)闊o法返回一個(gè)Cursor對象——查詢需要將查到的結(jié)果(就是表中的哪一行滿足查詢條件)返回,execSQL是返回void的,所以無法操作查詢語句。從這里可以了解到,Cursor接口從某種意義上說就是為了彌補(bǔ)這一點(diǎn)的——query方法就是返回了一個(gè)Cursor對象。從名字上看,它的意思是游標(biāo),所以大概可以猜到他起到了一個(gè)指代的作用(事實(shí)上就是的,它指代數(shù)據(jù)庫中保存數(shù)據(jù)的表的一行,并且還可以簡單的處理該行數(shù)據(jù)項(xiàng)的信息)。從類的描述看,Cursor提供了對一個(gè)數(shù)據(jù)庫查詢動(dòng)作返回結(jié)果束的隨機(jī)讀寫途徑,也就是說,它是一個(gè)對查詢操作返回結(jié)果進(jìn)行進(jìn)一步處理的類,而這些處理就是用Cursor里的方法實(shí)現(xiàn)的。

結(jié)合SimpleCursorAdapter這個(gè)適配器類,你可以很方便的將數(shù)據(jù)庫中的數(shù)據(jù)顯示到AdapterView(例如ListView,GridView)中——這也是Cursor的另一大用處。

如果你了解java中的迭代器(Iterator)的話你就會(huì)發(fā)現(xiàn)其實(shí)Cursor和迭代器有些相似,這樣你可能會(huì)更快的了解Cursor。

?

一些常用的方法有:

(1)public abstract?boolean?moveToPosition?(int?position)

?? ?public abstract?boolean?moveToFirst?()

?? ?public abstract?boolean?moveToLast?()

?? ?public abstract?boolean?moveToNext?()

?? ?public abstract?boolean?moveToPrevious?()

把這些方法放在一起的目的很明顯:它們都是對Cursor指向的位置進(jìn)行操作的方法——移到某個(gè)指定的位置、移到第一行、移到最后一行、移向下一行、移向上一行等等。

?

(2)public abstract?int?getCount?()

返回Cursor指向的表含有的總數(shù)據(jù)項(xiàng)數(shù)。

?

(3)public abstract?boolean?requery?()

Cursor是被一個(gè)query方法產(chǎn)生的,而這個(gè)方法就是將那個(gè)query方法所做的查詢動(dòng)作再執(zhí)行一遍——這將會(huì)改變調(diào)用該方法的Cursor對象的值,也就是說,Cursor使用了該方法后就復(fù)位了。

?

(4)public abstract?boolean?isClosed?()

?? ?public abstract?boolean?isFirst?()

?? ?public abstract?boolean?isLast?()

?? ?public abstract?boolean?isNull?(int?columnIndex)

?? ?public abstract?boolean?isClosed?()

?? ?public abstract?boolean?isAfterLast?()

?? ?public abstract?boolean?isBeforeFirst?()

在java中,類似于isWhatever形式的方法大都是對對象狀態(tài)進(jìn)行判斷的方法——Whatever成立則返回true,不成立則返回false。這些方法也不例外。

值得提一下的是isNull方法,該方法測試某個(gè)欄位所保存的信息是否為NULL。參數(shù)columnIndex代表了那個(gè)欄位的代號。

?

④另外建議各位了解一下SimpleCursorAdapter(android.widget.SimpleCursorAdapter)這個(gè)適配器類。

?

?

?

好了,介紹這么多了,該上源碼了。這個(gè)源碼很簡單,但代表一種使用模式,所以還是值得仔細(xì)研究的。

?

1.實(shí)現(xiàn)一個(gè)繼承SQLiteOpenHelper的類

?

  • import?android.content.ContentValues;??
  • import?android.content.Context;??
  • import?android.database.Cursor;??
  • import?android.database.sqlite.SQLiteDatabase;??
  • import?android.database.sqlite.SQLiteOpenHelper;??
  • public?class?DBHelper?extends?SQLiteOpenHelper?{??
  • ????private?static?final?String?DB_NAME?=?"coll.db";??
  • ????private?static?final?String?TBL_NAME?=?"CollTbl";??
  • ????private?static?final?String?CREATE_TBL?=?"?create?table?"??
  • ????????????+?"?CollTbl(_id?integer?primary?key?autoincrement,name?text,url?text,?desc?text)?";??
  • ??????
  • ????private?SQLiteDatabase?db;??
  • ????DBHelper(Context?c)?{??
  • ????????super(c,?DB_NAME,?null,?2);??
  • ????}??
  • ????@Override??
  • ????public?void?onCreate(SQLiteDatabase?db)?{??
  • ????????this.db?=?db;??
  • ????????db.execSQL(CREATE_TBL);??
  • ????}??
  • ????public?void?insert(ContentValues?values)?{??
  • ????????SQLiteDatabase?db?=?getWritableDatabase();??
  • ????????db.insert(TBL_NAME,?null,?values);??
  • ????????db.close();??
  • ????}??
  • ????public?Cursor?query()?{??
  • ????????SQLiteDatabase?db?=?getWritableDatabase();??
  • ????????Cursor?c?=?db.query(TBL_NAME,?null,?null,?null,?null,?null,?null);??
  • ????????return?c;??
  • ????}??
  • ????public?void?del(int?id)?{??
  • ????????if?(db?==?null)??
  • ????????????db?=?getWritableDatabase();??
  • ????????db.delete(TBL_NAME,?"_id=?",?new?String[]?{?String.valueOf(id)?});??
  • ????}??
  • ????public?void?close()?{??
  • ????????if?(db?!=?null)??
  • ????????????db.close();??
  • ????}??
  • ????@Override??
  • ????public?void?onUpgrade(SQLiteDatabase?db,?int?oldVersion,?int?newVersion)?{??
  • ????}??
  • }??
  • ?

    ?

    2.創(chuàng)建一個(gè)錄入數(shù)據(jù)的類

    ?

  • import?android.app.Activity;??
  • import?android.content.ContentValues;??
  • import?android.content.Intent;??
  • import?android.os.Bundle;??
  • import?android.view.View;??
  • import?android.view.View.OnClickListener;??
  • import?android.widget.Button;??
  • import?android.widget.EditText;??
  • public?class?AddActivity?extends?Activity?{??
  • ????private?EditText?et1,?et2,?et3;??
  • ????private?Button?b1;??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????setContentView(R.layout.add);??
  • ????????this.setTitle("添加收藏信息");??
  • ????????et1?=?(EditText)?findViewById(R.id.EditTextName);??
  • ????????et2?=?(EditText)?findViewById(R.id.EditTextUrl);??
  • ????????et3?=?(EditText)?findViewById(R.id.EditTextDesc);??
  • ????????b1?=?(Button)?findViewById(R.id.ButtonAdd);??
  • ????????b1.setOnClickListener(new?OnClickListener()?{??
  • ????????????public?void?onClick(View?v)?{??
  • ????????????????String?name?=?et1.getText().toString();??
  • ????????????????String?url?=?et2.getText().toString();??
  • ????????????????String?desc?=?et3.getText().toString();??
  • ????????????????ContentValues?values?=?new?ContentValues();??
  • ????????????????values.put("name",?name);??
  • ????????????????values.put("url",?url);??
  • ????????????????values.put("desc",?desc);??
  • ????????????????DBHelper?helper?=?new?DBHelper(getApplicationContext());??
  • ????????????????helper.insert(values);??
  • ????????????????Intent?intent?=?new?Intent(AddActivity.this,??
  • ????????????????????????QueryActivity.class);??
  • ????????????????startActivity(intent);??
  • ????????????}??
  • ????????});??
  • ????}??
  • }??
  • ?

    ?

    3.創(chuàng)建一個(gè)顯示數(shù)據(jù)庫數(shù)據(jù)的類

    ?


  • import?android.app.AlertDialog;??
  • import?android.app.ListActivity;??
  • import?android.content.DialogInterface;??
  • import?android.database.Cursor;??
  • import?android.os.Bundle;??
  • import?android.view.View;??
  • import?android.widget.AdapterView;??
  • import?android.widget.ListView;??
  • import?android.widget.SimpleCursorAdapter;??
  • import?android.widget.AdapterView.OnItemClickListener;??
  • public?class?QueryActivity?extends?ListActivity?{??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????this.setTitle("瀏覽收藏信息");??
  • ????????final?DBHelper?helpter?=?new?DBHelper(this);??
  • ????????Cursor?c?=?helpter.query();??
  • ????????String[]?from?=?{?"_id",?"name",?"url",?"desc"?};??
  • ????????int[]?to?=?{?R.id.text0,?R.id.text1,?R.id.text2,?R.id.text3?};??
  • ????????SimpleCursorAdapter?adapter?=?new?SimpleCursorAdapter(this,??
  • ????????????????R.layout.row,?c,?from,?to);??
  • ????????ListView?listView?=?getListView();??
  • ????????listView.setAdapter(adapter);??
  • ??????????
  • ??????????
  • ????????final?AlertDialog.Builder?builder?=?new?AlertDialog.Builder(this);??
  • ????????listView.setOnItemClickListener(new?OnItemClickListener()?{??
  • ????????????@Override??
  • ????????????public?void?onItemClick(AdapterView<?>?arg0,?View?arg1,?int?arg2,??
  • ????????????????????long?arg3)?{??
  • ????????????????final?long?temp?=?arg3;??
  • ????????????????builder.setMessage("真的要?jiǎng)h除該記錄嗎?").setPositiveButton("是",??
  • ????????????????????????new?DialogInterface.OnClickListener()?{??
  • ????????????????????????????public?void?onClick(DialogInterface?dialog,??
  • ????????????????????????????????????int?which)?{??
  • ????????????????????????????????helpter.del((int)temp);??
  • ????????????????????????????????Cursor?c?=?helpter.query();??
  • ????????????????????????????????String[]?from?=?{?"_id",?"name",?"url",?"desc"?};??
  • ????????????????????????????????int[]?to?=?{?R.id.text0,?R.id.text1,?R.id.text2,?R.id.text3?};??
  • ????????????????????????????????SimpleCursorAdapter?adapter?=?new?SimpleCursorAdapter(getApplicationContext(),??
  • ????????????????????????????????????????R.layout.row,?c,?from,?to);??
  • ????????????????????????????????ListView?listView?=?getListView();??
  • ????????????????????????????????listView.setAdapter(adapter);??
  • ????????????????????????????}??
  • ????????????????????????}).setNegativeButton("否",??
  • ????????????????????????new?DialogInterface.OnClickListener()?{??
  • ????????????????????????????public?void?onClick(DialogInterface?dialog,??
  • ????????????????????????????????????int?which)?{??
  • ??????????????????????????????????
  • ????????????????????????????}??
  • ????????????????????????});??
  • ????????????????AlertDialog?ad?=?builder.create();??
  • ????????????????ad.show();??
  • ????????????}??
  • ????????});??
  • ????????helpter.close();??
  • ????}??
  • }?
  • 轉(zhuǎn)載于:https://www.cnblogs.com/kexing/p/7622658.html

    總結(jié)

    以上是生活随笔為你收集整理的【转】Android开发之数据库SQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    国内偷拍精品视频 | 久久99欧美| 国产一区二区三区免费视频 | 亚洲国产精品视频在线观看 | 国产高清黄 | 99国产精品久久久久久久久久 | 天天插天天 | 国产亚洲在线观看 | 亚洲精品一区二区网址 | 91高清一区 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 夜色.com| 国产精品 中文字幕 亚洲 欧美 | 精品福利国产 | 亚洲精品成人av在线 | 999视频在线播放 | 美女网站免费福利视频 | 日韩二区在线 | 24小时日本在线www免费的 | 欧美一级电影在线观看 | 99精品亚洲 | 成人影音在线 | 欧美日韩超碰 | 日本久久免费视频 | 中文av网| 欧美日韩国产精品一区 | 亚洲精品中文字幕视频 | 久久一区二区三区国产精品 | 日韩欧美一区二区在线 | 狠狠插天天干 | 日韩欧美电影网 | 在线免费观看黄色小说 | 96av在线| 亚洲精品黄色在线观看 | 亚洲成人av电影在线 | 国产日韩欧美中文 | 97**国产露脸精品国产 | 高清视频一区 | 日韩免费网址 | 国产美女网站视频 | 九九热在线播放 | 香蕉久草在线 | 麻豆影视在线免费观看 | 欧美日韩精品综合 | 国产v欧美 | 不卡中文字幕av | 国产乱对白刺激视频在线观看女王 | 色九九影院 | 天天综合色天天综合 | 日韩大片在线播放 | 91天堂影院 | 亚洲精品乱码久久久久久 | 国产精品高潮在线观看 | 激情视频国产 | 天天操夜夜看 | 亚洲四虎在线 | 亚洲精品麻豆 | 97超视频 | 久久久精品国产一区二区 | 精品国产伦一区二区三区 | 国产精彩视频 | 日韩剧情| 在线观看日本韩国电影 | 中文字幕在线播放一区二区 | a色视频 | 波多野结衣一区二区三区中文字幕 | 国产高清视频在线免费观看 | 国内精品久久久久国产 | 国产黄免费 | 免费午夜av | 天天操人人干 | 日本婷婷色 | 日韩午夜一级片 | 久久大片网站 | 国产精品久久久久毛片大屁完整版 | 久99久精品视频免费观看 | 国产视频一级 | 嫩嫩影院理论片 | www.夜夜草 | 久久精品最新 | 一区久久久| 国产精品久久久久久久久久久久午 | 亚洲欧美国产精品18p | 欧洲av不卡| 日韩精品视频在线观看网址 | 一本一本久久a久久精品综合妖精 | 激情五月开心 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产大陆亚洲精品国产 | 久久69av| 四虎在线观看 | 天天天天天天天操 | 天天做天天爱天天综合网 | 免费在线观看的av网站 | 激情婷婷亚洲 | www亚洲精品 | 国产亚洲成人网 | 久久天天躁夜夜躁狠狠躁2022 | 国产成人免费在线观看 | 久久久久久国产一区二区三区 | 久久综合狠狠综合 | 久久精品久久久久 | 日本3级在线观看 | 五月婷婷丁香激情 | 91成人免费看 | 久久精品亚洲国产 | 久草网站在线 | 国产亚洲精品久久久久久 | 黄色在线观看www | 久久久精品欧美一区二区免费 | 天天综合操| 亚洲欧洲精品视频 | 国产在线视频在线观看 | 亚洲精品xxxx | 欧美贵妇性狂欢 | 人人干天天干 | 五月激情丁香婷婷 | 日三级在线 | av网站地址 | 久久国产免费看 | 狠狠干夜夜 | 在线成人小视频 | 久久综合狠狠综合久久激情 | 久草网视频 | 成人精品一区二区三区电影免费 | 久久久精品影视 | 新版资源中文在线观看 | av在线播放网址 | 日韩久久一区 | 国产精品美 | 欧美一区二视频在线免费观看 | 国产精品淫片 | 在线中文字幕播放 | 久久久久国产精品午夜一区 | 欧产日产国产69 | 又黄又爽又无遮挡的视频 | 91私密保健 | 午夜久久影院 | 精品国内自产拍在线观看视频 | 91人人揉日日捏人人看 | 六月久久婷婷 | 久草影视在线观看 | 怡红院久久 | 亚洲视频2 | 在线视频你懂得 | 久久国产精品精品国产色婷婷 | 欧美精品午夜 | 国产精品亚洲人在线观看 | 久久免费视频在线观看30 | 999精品视频 | 欧美日韩中文在线视频 | 中文字幕av最新更新 | 手机看片福利 | 成人永久在线 | 成人午夜免费福利 | 青青河边草观看完整版高清 | 日韩草比 | 在线播放第一页 | 狠狠色丁香婷婷综合基地 | 色偷偷888欧美精品久久久 | 日日天天狠狠 | 最近最新中文字幕视频 | 免费一级特黄录像 | 97超碰人人澡 | 日韩大陆欧美高清视频区 | 亚洲精品免费在线观看视频 | a午夜在线| 极品国产91在线网站 | 久久99婷婷 | 亚洲高清免费在线 | 国产成人精品国内自产拍免费看 | 久久99久久99精品中文字幕 | 视频一区视频二区在线观看 | www五月天 | 麻豆首页 | 一区二区三区在线免费播放 | 国产中文字幕视频在线观看 | 久久久久久看片 | 日日夜夜av | 精品一区二区电影 | 在线不卡的av| 免费在线观看日韩视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 久久,天天综合 | 欧美一区二区三区四区夜夜大片 | 亚洲成人网在线 | 黄色91免费观看 | 久久久久五月天 | 在线观看日本高清mv视频 | 高清av免费看 | 岛国av在线不卡 | 国产美女搞久久 | 日韩免费一区二区 | 色综合久久精品 | a天堂在线看| 国产精品男女视频 | 亚洲影院一区 | 四虎成人精品 | 天天色天天操综合 | 91大神精品视频 | 中文字幕一区二区三区视频 | 久久国产成人午夜av影院宅 | 永久免费观看视频 | 国产色就色 | 亚洲欧美在线视频免费 | 久久婷婷色 | 中文字幕日韩国产 | 中文字幕一区二区三区四区在线视频 | 国产综合在线视频 | 狠狠插天天干 | 一级a性色生活片久久毛片波多野 | 2020天天干夜夜爽 | 激情网五月婷婷 | 婷婷九九 | 色国产在线 | 亚洲国产剧情av | 狠狠色噜噜狠狠 | 五月婷婷视频 | 欧美肥妇free| 久久av福利| 国产精品久久久久一区 | 亚洲精品国产精品国自 | 色婷婷五 | 免费视频 三区 | 欧美日韩综合在线 | 又紧又大又爽精品一区二区 | 国产精品6 | 国产黄色高清 | 最新国产在线视频 | 色视频在线免费观看 | 激情欧美在线观看 | 少妇高潮冒白浆 | 天堂视频中文在线 | 成人av动漫在线 | 91传媒免费观看 | 人人插超碰 | 在线观看免费 | 久草视频在线免费播放 | 97超碰国产在线 | 中文字幕 在线 一 二 | 日日操天天射 | 日日精品 | 欧美日韩在线免费视频 | 亚洲免费av在线 | 九九热免费观看 | 国产视频中文字幕 | 亚洲精品视频在线免费 | 日韩免费小视频 | 亚洲日本黄色 | 丁香九月婷婷综合 | 亚洲欧美日韩国产一区二区 | 黄色毛片观看 | 天天色中文 | 91丨porny丨九色 | 国产涩涩网站 | 久艹在线免费观看 | 亚洲电影图片小说 | 欧美成年人在线观看 | 国产精品18久久久久久久 | 久久9999久久| 久久你懂得 | 久久国产精品久久精品 | 国产小视频你懂的在线 | 在线欧美中文字幕 | 亚洲一级二级三级 | 午夜99| 81国产精品久久久久久久久久 | 久久久91精品国产一区二区三区 | 在线看成人| 久精品视频免费观看2 | 午夜av色 | 天天激情综合 | 国产免费久久精品 | 特级黄色一级 | 在线观看免费av网站 | 欧美日韩在线观看一区二区 | 国产精品入口66mio女同 | 九九热99视频 | 蜜桃视频在线视频 | 免费午夜网站 | 亚洲视频在线观看网站 | 在线观看视频你懂 | 亚洲天堂网在线观看视频 | 亚洲国产精品电影 | 91精品国自产在线偷拍蜜桃 | 亚洲国产成人精品在线 | 亚洲劲爆av | 一 级 黄 色 片免费看的 | 免费热情视频 | 国产va饥渴难耐女保洁员在线观看 | 欧美乱熟臀69xxxxxx | 国产精品久久久久一区二区三区共 | 人人射av| 免费在线激情电影 | 在线成人观看 | 久草在线网址 | 中文字幕一区二区三区在线播放 | 国产亚洲婷婷免费 | 最新av在线播放 | 国产黄色在线看 | 中文字幕免费久久 | 国产精品久久久久久一区二区三区 | 国产精品一区二区你懂的 | 国产精品久久久av久久久 | 久久99精品国产99久久6尤 | 97香蕉超级碰碰久久免费软件 | www五月天com | 久久综合九色99 | 久久影院一区 | 91精品视频免费观看 | 国产精品igao视频网入口 | 国产成人av电影在线 | 日韩在线一级 | 天天爽天天射 | 色wwwww| 欧美综合色在线图区 | 一区在线观看 | 在线看毛片网站 | 日韩在线观看视频在线 | av在线免费观看黄 | 伊人天天综合 | 色狠狠干 | 亚洲黄色激情小说 | 亚洲三级黄 | 黄色大片av | zzijzzij亚洲成熟少妇 | 国产成人精品av | 日批在线观看 | 国产久草在线观看 | 欧美俄罗斯性视频 | 波多野结衣一区二区三区中文字幕 | 久久久久久美女 | 亚洲国产午夜 | 天堂资源在线观看视频 | 中文字幕免费观看全部电影 | 一区中文字幕 | av一本久道久久波多野结衣 | 久久久久久网站 | 香蕉久草在线 | 久久久99精品免费观看app | 精品一区二区精品 | 在线电影91 | 在线视频免费观看 | 国产在线观看 | 91精品国产欧美一区二区 | 亚洲精品久久久久久中文传媒 | 97视频播放 | 国产精品视频专区 | 天天久久夜夜 | 欧美精品一区二区免费 | 91免费黄视频 | 欧美一级片在线 | 国产91全国探花系列在线播放 | 色婷婷丁香 | 天堂在线一区二区 | 免费男女羞羞的视频网站中文字幕 | 三级av网站 | 国产一级电影网 | 在线国产日本 | 国产一区二区在线播放 | 黄色一级在线观看 | 久久er99热精品一区二区 | 伊在线视频 | 国产一级免费播放 | 在线观看一区 | 五月开心六月伊人色婷婷 | 国产美女黄网站免费 | aav在线| 狠狠色综合欧美激情 | 婷婷在线看| 国产成人久久久久 | 亚洲综合日韩在线 | 免费av福利 | 99爱视频在线观看 | 中文字幕一区二区三区精华液 | 在线免费精品视频 | av电影在线观看完整版一区二区 | 成人中文字幕在线 | 欧美成年性 | 亚洲精品色视频 | 狠狠色丁香婷婷综合久小说久 | 91麻豆精品国产自产在线游戏 | 国产一级视频免费看 | 人人爽人人爽人人片av | 国产美女精品视频免费观看 | 在线播放一区二区三区 | 国产黄色特级片 | 久草在线视频资源 | 国产精品去看片 | 97精品欧美91久久久久久 | 中字幕视频在线永久在线观看免费 | 国产精品久久人 | 国产亚洲精品久久久网站好莱 | 国产看片网站 | 国产91精品在线播放 | 在线亚洲成人 | 久久久久久久久久久高潮一区二区 | 久久草在线视频国产 | 亚洲视频 中文字幕 | 国产精品免费不卡 | 狠狠狠干 | www.久久免费 | 99精品视频在线观看视频 | 亚洲精品字幕在线观看 | 91视频大全 | 国产成人综合图片 | 国产在线小视频 | 3d黄动漫免费看 | 国产免费中文字幕 | 国产精品专区h在线观看 | 少妇性bbb搡bbb爽爽爽欧美 | 成人少妇影院yyyy | 欧美另类调教 | 美女免费视频网站 | 国产一级免费观看 | 天天操天 | 欧美性性网 | 久久人人爽人人爽人人片 | 精品国产伦一区二区三区 | 天天干视频在线 | 日韩免费一区 | 伊人婷婷激情 | 伊人永久| 狠狠躁夜夜av | 四虎天堂 | 碰超在线观看 | 久久久 精品 | 9999激情| 日韩视频欧美视频 | 亚洲乱码在线 | 99久热在线精品视频成人一区 | 最新国产精品视频 | 亚洲国产欧美一区二区三区丁香婷 | 久久成人国产精品入口 | 美女精品久久 | 亚洲精品在线免费播放 | 91亚色视频在线观看 | 亚洲欧美精品在线 | 在线精品亚洲一区二区 | 日韩素人在线观看 | 麻豆视频大全 | 久九视频| 国产精品永久在线观看 | 黄色av网站在线观看免费 | 亚洲精品视频在线观看网站 | 亚洲男男gaygayxxxgv | 国产又粗又猛又黄又爽 | 久久精品国产精品亚洲 | 中文字幕在线观看第一区 | 美女视频黄在线 | 美腿丝袜一区二区三区 | 国产精品18久久久久久久久久久久 | 国产乱对白刺激视频在线观看女王 | 一区在线免费观看 | 日日干精品 | 日本特黄特色aaa大片免费 | 日日干夜夜操视频 | 日韩中文字幕电影 | 久久久久久久久久久久国产精品 | 久久精品4| 国产成人在线播放 | 中文在线资源 | av网址aaa| 夜夜干夜夜 | 国产在线播放不卡 | 免费视频黄色 | 在线观看黄网站 | av看片在线观看 | 久久久久区 | 天天干天天干天天操 | 日韩精品视频免费在线观看 | 国产黄色电影 | 亚洲草视频| 亚洲精品婷婷 | 91看国产| 中文字幕一区二区三区视频 | 四虎国产免费 | 91看片在线观看 | 色婷婷欧美 | 欧美日韩中文国产一区发布 | 国产精品免费高清 | av片子在线观看 | 成人网页在线免费观看 | 精品一区精品二区 | 中文字幕在线一二 | 久久综合色影院 | 青草视频在线看 | 日韩在线视 | 国产麻豆电影 | 超碰个人在线 | 免费碰碰 | 中文字幕在线免费观看 | 国产大尺度视频 | 国产性xxxx | 日本 在线 视频 中文 有码 | 在线视频成人 | 久久人人爽人人爽人人 | 国产精品久久久99 | 96久久精品 | 日韩精品一区二区在线 | 婷婷福利影院 | 国产精品美女久久 | 国产成人精品一区二区三区福利 | 日本久久综合网 | 精品日本视频 | 久草在线电影网 | 久久精品人 | 日韩视频图片 | 色大片免费看 | 91精品推荐 | 91在线你懂的 | 亚洲影院国产 | 久久最新视频 | 日韩偷拍精品 | 精品中文字幕视频 | 成人欧美一区二区三区在线观看 | 免费观看全黄做爰大片国产 | 中文字幕av全部资源www中文字幕在线观看 | 中文字幕在线播放第一页 | 国产香蕉97碰碰碰视频在线观看 | 欧美日韩三级 | 天天曰夜夜爽 | 国产在线播放观看 | 国产色秀视频 | 成人在线观看你懂的 | 久久成人视屏 | 国产精品12 | 国产香蕉97碰碰久久人人 | 久久久香蕉视频 | 最近高清中文字幕在线国语5 | 国产精品99免视看9 国产精品毛片一区视频 | 久久久久亚洲精品国产 | 免费av小说 | 日韩美一区二区三区 | 夜夜爽天天爽 | 久久精品99北条麻妃 | 国产黄| 青青网视频 | av女优中文字幕在线观看 | 国产精品免费观看国产网曝瓜 | 99久高清在线观看视频99精品热在线观看视频 | 精品国产乱码久久久久久三级人 | 91女子私密保健养生少妇 | 国产玖玖视频 | 视频国产精品 | 国产一区免费在线 | 亚洲综合涩 | 99久免费精品视频在线观看 | 在线视频成人 | 在线观看激情av | 亚洲码国产日韩欧美高潮在线播放 | 天天综合网天天综合色 | 日韩欧美视频二区 | 伊香蕉大综综综合久久啪 | www.久久久久 | 亚洲成人一区 | 一区二区三区观看 | 亚洲一级片在线看 | 久久久久久国产精品 | 色婷婷久久一区二区 | 色综合综合| 欧美男同视频网站 | 日韩精品一区二区三区丰满 | 久久爱导航 | 亚洲男男gⅴgay双龙 | 99久久久久久久 | 午夜精品久久久久久久久久久久 | 欧美色图狠狠干 | 婷婷色中文字幕 | 午夜少妇av | 在线视频 一区二区 | 成人午夜久久 | 精品国产视频在线观看 | 国产精品成人免费 | 色网免费观看 | 欧美极品少妇xbxb性爽爽视频 | 国产中文字幕视频在线观看 | 久久久久www| 亚洲黄色片| 精品一二三四在线 | 精品视频资源站 | 黄污视频网站大全 | 亚洲一区日韩在线 | 热久久免费视频精品 | 国产在线a不卡 | av在线最新 | 欧美日韩一区二区在线观看 | 成人app在线免费观看 | 欧美黄色软件 | 香蕉视频国产在线 | 日韩精品一区二区三区免费观看 | 日产乱码一二三区别在线 | 国产精品综合在线 | 97在线精品国自产拍中文 | 欧美精品久久天天躁 | 国产最新福利 | 久久精品日产第一区二区三区乱码 | 五月天六月婷婷 | a午夜电影 | 黄色一级大片在线免费看国产一 | a在线播放| 91视频高清免费 | 色香蕉视频 | 国产手机在线观看 | 精品视频99 | 日韩精品一区二 | 青青啪 | 日本韩国精品一区二区在线观看 | 中文国产字幕在线观看 | 人人插人人爱 | 国产午夜激情视频 | 2023亚洲精品国偷拍自产在线 | 夜夜爽www | 五月开心婷婷 | 天天综合导航 | 国产成人一区在线 | 日韩在线播放视频 | 亚洲精品久久久久久久不卡四虎 | 欧美美女激情18p | 一区二区理论片 | 91成人精品一区在线播放69 | 黄色电影在线免费观看 | 草久在线 | 黄色av一级 | 国产精品久久99综合免费观看尤物 | 精品国产伦一区二区三区观看方式 | 亚洲狠狠丁香婷婷综合久久久 | 伊人天天狠天天添日日拍 | 天天综合导航 | 国产精品久久久久久久久久妇女 | 国内一级片在线观看 | 婷婷激情影院 | 成人毛片一区二区三区 | 欧美aaa一级 | 亚洲精品国产自产拍在线观看 | 久久综合日 | 国产区精品在线 | 久久久久久久国产精品 | 久久爽久久爽久久av东京爽 | 国产原创在线视频 | 国产精品毛片久久久久久 | 午夜国产在线观看 | 日韩三级在线观看 | 国产在线观看午夜 | va视频在线观看 | 东方av在| 欧美激情在线网站 | 狠狠干狠狠色 | 国产一区在线视频 | 五月天堂网 | 亚洲天堂精品视频 | av中文字幕网 | 免费人成在线观看网站 | 亚洲国产一区二区精品专区 | 久久综合九色综合欧美就去吻 | 日韩一级黄色大片 | 四虎www. | 国产成人三级在线 | 天堂av色婷婷一区二区三区 | 色婷婷综合成人av | 国产麻豆精品一区二区 | 国产亚洲观看 | 99热播精品 | 黄色成品视频 | 九月婷婷综合网 | 成人免费在线观看av | 国产一区二区午夜 | 狠狠88综合久久久久综合网 | 国产美腿白丝袜足在线av | 日韩精品一区二区三区电影 | 日本夜夜草视频网站 | 国产色综合天天综合网 | 综合天天色 | 欧美一级性 | 亚洲黄色片一级 | 国内视频在线观看 | 久草在线观 | 色噜噜日韩精品欧美一区二区 | 三日本三级少妇三级99 | 久久夜色网 | 久久无码av一区二区三区电影网 | 国产精品男女 | 97精品视频在线 | 伊甸园永久入口www 99热 精品在线 | 国内99视频| 亚洲欧洲成人精品av97 | 欧美日韩另类视频 | 免费看的视频 | 在线观看中文字幕视频 | 97超碰精品| www.日韩免费 | 91久久久久久久 | 成人影音在线 | 日韩精品亚洲专区在线观看 | 亚洲男男gaygay无套 | 亚洲一区 av| 久久精品一二三区 | av三级av | 麻豆精品传媒视频 | 久久久久成人精品免费播放动漫 | 亚洲日本va午夜在线影院 | 欧美极品久久 | 中文字幕在线观看视频一区 | 久久久久亚洲国产 | 日韩大片在线 | 亚洲影视九九影院在线观看 | 夜又临在线观看 | 在线视频精品播放 | www.久久精品视频 | 国产日产精品一区二区三区四区的观看方式 | 欧美一区二区三区不卡 | 亚洲黄色一级大片 | 日韩电影中文字幕在线观看 | 久久精品牌麻豆国产大山 | 久久精品电影网 | 99国产成+人+综合+亚洲 欧美 | a黄色片| 九热精品 | 久草精品视频在线看网站免费 | 欧美高清成人 | 久热免费在线观看 | 国产精品二区在线观看 | 欧美日韩高清一区二区 | 99久久精品免费看 | 日韩精品视频在线免费观看 | 岛国av在线免费 | 五月婷婷黄色 | 天天干天天干天天操 | 精品国产精品一区二区夜夜嗨 | 日韩久久久久久 | 久草国产在线观看 | 日韩在线观看精品 | 人人看人人爱 | 91日韩精品视频 | 婷婷综合伊人 | 成人av在线直播 | 亚洲作爱视频 | 久久爱导航 | 一区二区三高清 | 国产精品久久久久久久久久了 | 福利区在线观看 | 高清久久久久久 | 欧美精品亚州精品 | 亚洲精品国产精品久久99 | 免费久久久久久 | 成片视频免费观看 | 久久久首页 | 久久爱影视i | 国产日韩欧美在线影视 | 欧美国产一区在线 | 丁香五月网久久综合 | 在线观看aa | 九热在线 | 欧美日韩一区二区三区在线免费观看 | 亚洲精品乱码久久久久久蜜桃91 | 国产小视频在线免费观看 | 国产日韩欧美在线一区 | 国产小视频在线 | 美女久久一区 | 国产精品国产精品 | 国内精品久久久久影院优 | 91探花视频| 奇米网8888 | 青青久视频 | 国产在线成人 | 国产精品视频你懂的 | 狠狠狠色丁香婷婷综合久久五月 | 日韩在线不卡av | 日日夜夜精品免费 | 国产精品片 | 久久精品视频4 | 成人午夜影院 | 日日爱网址 | 日韩精品一区二区三区免费观看视频 | 久久久久久国产精品亚洲78 | 久久一区精品 | 久久国产高清视频 | 超碰在线97观看 | 国产在线va| 精品日韩在线 | 成人黄色毛片 | 中文字幕一区二区三区久久 | 狠狠干婷婷| 人人射| 日本精品免费看 | 成+人+色综合| 国产一级在线观看视频 | 亚洲成a人片在线www | 人人澡人| 婷婷射五月 | 91大神电影 | av中文字幕网站 | 99re国产视频 | 国产成人精品女人久久久 | 久草资源免费 | 人人精品久久 | 99热最新 | 国产.精品.日韩.另类.中文.在线.播放 | 91麻豆精品国产91 | 91久久久久久久 | av888.com| 国产精品毛片一区视频 | 欧美精品免费在线观看 | 日本精品一区二区三区在线播放视频 | 中文字幕在线看视频国产中文版 | 日韩区欠美精品av视频 | 国产麻豆视频 | 99久久久久免费精品国产 | 久久精品96 | 国产91欧美 | 国产亚洲精品久久网站 | 久草免费在线视频观看 | 色综合久久综合中文综合网 | 日韩午夜小视频 | 中国一级片免费看 | 91看片淫黄大片91 | 日韩手机在线 | 久久久久久久久久影院 | 91免费看黄色 | 五月婷在线播放 | 天天操天天操天天 | 特级西西444www大精品视频免费看 | 国产美女视频 | 国产 一区二区三区 在线 | 免费在线观看av网站 | 日本xxxx.com | 日韩免费视频观看 | 欧洲亚洲精品 | 中文字幕在线播放av | 亚洲国产精品久久久 | 不卡的av在线 | 日韩欧美国产视频 | 中日韩欧美精彩视频 | 国产精品午夜在线观看 | 欧美日韩有码 | 国产在线免费观看 | 色天天久久 | 五月婷婷伊人网 | 中文字幕免费高 | 日韩免费三级 | 国产在线精品一区二区 | 欧美性性网 | 91高清视频在线 | 黄色网www| 婷婷五月情 | 日韩有码在线观看视频 | av网址在线播放 | 狠狠狠狠狠狠 | 久久影院精品 | 亚洲国产播放 | 97理论电影 | 成人一区二区三区中文字幕 | 日韩av视屏在线观看 | 亚洲天堂色婷婷 | 欧美日韩国产色综合一二三四 | 久久艹艹 | 九九免费精品视频在线观看 | 超碰在线98 | 91在线一区二区 | avav片| 成人免费观看在线视频 | 亚洲精品国产视频 | 91夜夜夜| 国产91国语对白在线 | 国产精品福利午夜在线观看 | 国产综合福利在线 | 99久久9 | 日韩欧美一区二区三区在线 | 日本中文字幕影院 | 日韩av中文在线观看 | 欧美日韩中文另类 | 日本精品久久久久久 | 亚洲成av人片一区二区梦乃 | 国产免费一区二区三区最新 | 精品国产精品国产偷麻豆 | 久久精品久久99精品久久 | 久久精品久久久精品美女 | 亚洲国产精品人久久电影 | 美女黄视频免费 | 国产精品18久久久久vr手机版特色 | 天天色天天干天天 | 91精品久| 激情综合交 | 国产精品美女久久久久久2018 | 亚洲精品资源 | 国产精品区一区 | 99视频在线精品国自产拍免费观看 | 99产精品成人啪免费网站 | 91精品国产麻豆国产自产影视 | 黄色av一级片| 亚州日韩中文字幕 | 色综合 久久精品 | 91精品国产网站 | 国产精品va在线播放 | 国产精品美女www爽爽爽视频 | 久草视频首页 | 国产午夜精品一区二区三区在线观看 | 亚洲欧美婷婷六月色综合 | 81国产精品久久久久久久久久 | 激情五月在线 | 免费观看9x视频网站在线观看 | 综合激情网...| 99在线精品视频 | 久久伦理 | 国产在线精品视频 | 亚洲精品欧美成人 | 亚洲精品videossex少妇 | 亚洲精品国偷拍自产在线观看蜜桃 | 91人人人 | 四虎在线视频免费观看 | 色在线高清| 日韩a级黄色 | 国产乱码精品一区二区蜜臀 | 99re久久资源最新地址 | 伊人www22综合色 | 亚洲午夜小视频 | 狠狠综合| 黄色看片 | 深爱综合网 | 国产免费作爱视频 | 日本中文在线观看 | 91精品婷婷国产综合久久蝌蚪 | 91精品国 | 亚洲无吗av | 99热精品视 | 成人理论电影 | 超级碰99 | 1024手机基地在线观看 | 91大神电影 | 三级动态视频在线观看 | 午夜av激情 | 久久视屏网 | 国产免费成人 | 中文字幕黄色 | 涩涩伊人 | 91大片成人网 | 999久久国精品免费观看网站 | 4438全国亚洲精品在线观看视频 | 蜜臀av网址 | 在线国产一区 | 免费观看日韩 | 亚洲成人av在线播放 | 超碰在线成人 | 久久综合中文字幕 | 成年人国产在线观看 | 99热超碰在线 | 人人干天天干 | av女优中文字幕在线观看 | 久久狠狠婷婷 | 国产亚洲成av人片在线观看桃 | 99精品色 | 亚洲精品小区久久久久久 | 欧美精品一区二区三区四区在线 | 99色国产| 久草视频免费 | 国产精品成人国产乱一区 | 免费在线观看日韩 | av片子在线观看 | 中文字幕在线观看网站 | 日韩艹| 国产v在线播放 | 久久久官网 | 黄色三级在线 | 国偷自产中文字幕亚洲手机在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 五月婷婷六月综合 | 久久久久久久久久福利 | 最近在线中文字幕 | 欧美 亚洲 另类 激情 另类 | 在线视频一区二区 | 欧美日韩高清一区二区 国产亚洲免费看 | 亚洲精品久久久久久久不卡四虎 | 亚洲欧洲国产视频 | 国产精品久久久久久久久久 | 毛片一区二区 | 国产在线观看网站 | 夜夜操天天干, | 免费久久99精品国产婷婷六月 | 中文字幕av在线 | 日韩精品中文字幕av | 伊人日日干| 国产成人免费 | 午夜精品一区二区三区可下载 | 99热亚洲精品 | 欧日韩在线视频 | 日韩欧美视频在线免费观看 | 日韩字幕 | 综合铜03 | 欧美在线视频第一页 | 国产欧美精品一区二区三区四区 | 中文字幕免费观看 | av在线永久免费观看 | 在线免费av网站 | 在线视频 一区二区 | 人人看97| 午夜国产一区 | 91亚洲永久精品 | 精品九九九九 |