SQLite的學(xué)習(xí)
1.特點(diǎn)
????程序驅(qū)動(dòng),嵌入式,不需要專門的數(shù)據(jù)庫(kù)引擎+
????SQLite其實(shí)是無(wú)數(shù)據(jù)類型的。指定類型后但不做檢查。
????有五種類型:Integer varchar(10) float double char(10) text
2.Sql通用常用指令
? ? 2.1創(chuàng)建表的語(yǔ)句
????????create table 表名(字段名稱 數(shù)據(jù)類型 約束,字段名稱 數(shù)據(jù)類型 約束......)
????????create table person(_id Integer primary key,namevarchar(10),age Integer not null)
? ? 2.2刪除表的語(yǔ)句
????????Drop table 表名
? ? 2.3插入數(shù)據(jù)
????????Insert into 表名[字段,字段] values(值1,值2......)
????????//中括號(hào)此處表示可有可無(wú)
????????Insert into person(_id,age) values(1,20)
????????Insert into person values(2,”zs”,30)? //如果沒(méi)有在person后加字段,則values里的值按順序給各字段插入
? ? 2.4修改數(shù)據(jù)
????????Update 表名set 字段=新值where 修改的條件
????????Update person set name=”ls” where _id=1?? //意思是把_id等于1的人的名字修改成ls
????????如果是要修改多個(gè)值,就Update person set name=”ls”,age=20 where _id=1
? ? 2.5刪除數(shù)據(jù)
????????Delete from 表名 where 刪除的條件
????????Delete from person where _id=2? //person后不加字段限制則全部刪除
? ? 2.6查詢語(yǔ)句
????????Select 字段名 from 表名 where 查詢條件 group by 分組的字段 having 篩選的條件order by 排序字段
????????Select * from person; //將person中的所有數(shù)據(jù)展示??*是通配符
????????Select * from person where _id=1;//查詢person表中_id等于1的人的情況
????????Select * from person where _id<>1;//查詢person表中_id不等于1的人的情況
????????Select * from person where _id<>1 and age>18;//多個(gè)條件。查詢person表中_id不等于1且age大于18的人的情況
????????...
????????Select * from person where _id<>1 order by age;//查詢person表中_id不等于1的人的情況,并且按年齡排序
3.Sqlite數(shù)據(jù)庫(kù)創(chuàng)建
? ? 3.1用SQLiteOpenHelper這樣一個(gè)已經(jīng)定義好的類來(lái)創(chuàng)建。這個(gè)類里定義了創(chuàng)建方法:onCreate(),數(shù)據(jù)庫(kù)升級(jí)方法:onUpgrade(),打開(kāi)數(shù)據(jù)庫(kù)方法:onOpen()。
? ? 3.2一個(gè)新的項(xiàng)目。先寫一個(gè)BUTTON,在點(diǎn)擊之后觸發(fā)一個(gè)創(chuàng)建數(shù)據(jù)庫(kù)的事件。在對(duì)應(yīng)的包下新建一個(gè)utils工具類,可以起名為MySqliteHelper,在這里面實(shí)現(xiàn)創(chuàng)建數(shù)據(jù)庫(kù)/升級(jí)數(shù)據(jù)庫(kù)/打開(kāi)數(shù)據(jù)庫(kù)等功能,因此它需要extends SQLiteOpenHelper。然后ALT+回車,重寫OPEN和UPGRADE,再寫相應(yīng)的構(gòu)造函數(shù)。
????注意到,這里的構(gòu)造函數(shù)需要傳入四個(gè)參數(shù),之后的時(shí)候每次都傳四個(gè)不太方便,所以再定義一個(gè)新的常量工具類:
????,然后再寫一個(gè)新的構(gòu)造函數(shù)
????點(diǎn)擊,觀察log
????先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)對(duì)象,然后打開(kāi)。
????數(shù)據(jù)庫(kù)中大部分都是用表的形式管理。通常,創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,我們都會(huì)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表。比如,此時(shí)在數(shù)據(jù)庫(kù)的onCREATE中寫一個(gè):
????String sql="create table person(_id Integer primary key,name
????varchar(10),age Integer)";
????Create table表示創(chuàng)建一個(gè)表?然后person是表名,括號(hào)里是字段。同理,為了提高耦合性,可以在常量工具類中定義表名/ID/NAME等信息。
????在CONSTANT里定義好了之后,這句命令改寫為:
????String sql="create table "+Constant.TABLE_NAME+"("+Constant._ID+" Integer primary key,"+Constant.NAME+" varchar(10),"+Constant.AGE+" Integer)";
????在雙引號(hào)括起來(lái)的字符串中可以再加“+...+”,中間寫變量名。
?????? 定義好sql表后,在下面寫一個(gè)執(zhí)行語(yǔ)句。
?????? 然后這張數(shù)據(jù)庫(kù)表就創(chuàng)建完成了。