Android:數(shù)據(jù)庫SQLite增刪查改和可視化

流程

1. 我們?cè)谀愕膅radle(app)文件里面來添加依賴環(huán)境(使用的是github上一個(gè)數(shù)據(jù)庫可視化工具)

debugCompile 'com.amitshekhar.android:debug-db:1.0.0'

你需要確保你的電腦和用來調(diào)試的手機(jī)是一個(gè)wifi下

2.連接手機(jī)進(jìn)行usb調(diào)試 ,打開電腦cmd輸入

確保你的電腦配置了adb環(huán)境(配置方法很簡單就略)

配置adb方法

輸入adb顯示了幫助信息說明你的adb配置成功

輸入adb forward tcp:8080 tcp:8080


如果你的端口8080被占用則使用其他端口

比如修改為8088端口(位于app的gradle文件)

buildTypes {

release {

minifyEnabled false

? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

? ? ? ? }

debug {//這里

? ? ? ? ? ? resValue("string","PORT_NUMBER","8088")

}}}

注意這里修改為8088之后吕粹,其他端口定義位置也要對(duì)應(yīng)修改

在輸入瀏覽器時(shí)候?qū)?yīng)修改為localhost:8088

輸入的adb命令為:adb forward tcp:8088 tcp:8088

3.run 然后瀏覽器輸入localhost:8080就可以看到你的數(shù)據(jù)庫和表


4.創(chuàng)建一個(gè)數(shù)據(jù)庫和表

首先創(chuàng)建一個(gè)類DbHelper extends SQLiteOpenHelper然后重寫它的兩個(gè)方法

創(chuàng)建數(shù)據(jù)庫和第一張表

MainActivity下:

DbHelper dbHelper=new DbHelper(this,"_db",null,1);

SQLiteDatabasetest db=dbHelper.getWritableDatabase();

Dbhelper下

Public void onCreate(SQLiteDatabasesqLiteDatabase){sqLiteDatabase.execSQL("createtableifnotexistsver1_tb(_id integer primarykey autoincrement,_name varchar(20))");}

5.增刪查改

? ? ? ? //增加記錄

? ? ? ? //方法1

? ? ? ? db.execSQL("insert into ver1_tb(_name) values('jack')");

? ? ? ? //方法2 你也可以封裝一下再寫一個(gè)類返回一個(gè)ContenValues對(duì)象

? ? ? ? ContentValues values = new ContentValues();

? ? ? ? values.put("_name","jack");

? ? ? ? db.insert("ver1_tb",null,values);

? ? ? ? //刪除記錄

? ? ? ? //方法1

? ? ? ? db.execSQL("delete from ver1_tb where _id = 2");

? ? ? ? //方法2

? ? ? ? db.delete("ver1_tb","_id = ?", new String[]{String.valueOf(2)});

? ? ? ? //查找記錄

? ? ? //null的位置就意味著保留所有的列

? ? ? ? Cursor cursor = db.query("ver1_tb", null, "_id=?", new String[]{String.valueOf(1)}, null, null, null);

? ? ? ? String result = "";

? ? ? ? if (cursor.moveToFirst()) {

? ? ? ? ? ? int j;

? ? ? ? ? ? for (j = 0; j < cursor.getCount(); j++) {

? ? ? ? ? ? ? ? result = result + "" + Integer.toString(cursor.getInt(cursor.getColumnIndex("_id"))) + cursor.getString(1);

? ? ? ? ? ? ? ? cursor.move(j);

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? Log.i("db", result);

? ? ? ? //修改記錄

? ? ? ? //方法1

? ? ? ? values.clear();

? ? ? ? values.put("_name","mike");

? ? ? ? db.update("ver1_tb",values,"_id =?", new String[]{Integer.toString(1)});

? ? ? ? //方法2

? ? ? ? db.execSQL("update ver1_tb set _name='rose' where _id = 1");


? ? ? ? ?//增加表

? ? ? ? db.execSQL("create table? if not exists temp(stuname varchar)");

? ? ? ? //刪除表

? ? ? ? db.execSQL("drop table temp");

6.現(xiàn)在升級(jí)數(shù)據(jù)庫。

更改表的結(jié)構(gòu),ver1_tb修改為列數(shù)為4的表 _id? _name? _year _salary

修改之前

修改之后

方法:在onUpgrade方法里面添加語句诅需。當(dāng)然你也可以考慮使用事務(wù)

? //重命名表

? sqLiteDatabase.execSQL("ALTER TABLE ver1_tb RENAME TO temp");

? //創(chuàng)建臨時(shí)表

? sqLiteDatabase.execSQL("create table ver1_tb(_id integer primary key autoincrement, _name varchar,_age integer,_salary integer) ");

? //拷貝原來表里面的內(nèi)容

? sqLiteDatabase.execSQL("insert into ver1_tb(_id,_name,_age,_salary) select _id,_name,_age,'' from temp");

? //刪除臨時(shí)表

? sqLiteDatabase.execSQL("drop table temp");

7.sqlite的數(shù)據(jù)類型:

NULL: 空值

varchar:字符串

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

CHAR(n):長度固定為n的字串堰塌,n不能超過 254。

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

REAL: 所有值都是浮動(dòng)的數(shù)值,被存儲(chǔ)為8字節(jié)的IEEE浮動(dòng)標(biāo)記序號(hào).

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

BLOB: 值是BLOB數(shù)據(jù)塊分衫,以輸入的數(shù)據(jù)格式進(jìn)行存儲(chǔ)场刑。如何輸入就如何存儲(chǔ),不改??變格式。

DATA :包含了 年份蚪战、月份牵现、日期。

TIME: 包含了 小時(shí)邀桑、分鐘瞎疼、秒。

8.一些常用的Sql語句

CREATE TABLE IF NOT EXISTS t_shop (name text , price real);

DROP TABLE IF EXISTS t_shop;

INSERT INTO t_shop(name , price) VALUES ('娃哈哈',2.0);

UPDATE t_shop SET name = '農(nóng)夫山泉' , price = 3.0;

DELETE FROM t_shop;

UPDATE t_shop SET name = '農(nóng)夫山泉' WHERE price = 2.0;

SELECT * FROM WHERE price = 3.0;

SELECT name myname , price myage FROM t_shop;

# 給name起個(gè)叫myname的別名壁畸,給price起個(gè)叫myprice的別名

SELECT s.name , s.price FROM t_shop s;

# 給t_shop起個(gè)別名s贼急,用s來引用表中的字段

SELECT COUNT [name] FROM t_shop;

SELECT * FROM t_shop ORDER BY price;

SELECT * FROM t_shop ORDER BY price ASC , name DESC;

# 跳過前面4條記錄,取8條記錄

SELECT * FROM t_shop LIMIT 4 , 8;

CREAT TABLE t_student (id integer , name text not null unique , age integer not null default 1);

create table t_student (id integer primary key autoincrement , name text , age integer);

create table t_student (id integer primary key autoincrement , name text , age integer , constraint fk_student_class foreign key [class_id] references t_class[id]);

select s.name,s.age from t_student s, t_class c where s.class_id = c.id and c.name = ‘0316iOS’;

參考鏈接:

https://www.baidu.com/link?url=SaMFE4G8xdsgv0r54fAohCrHcSC7KSFBQ0O-X0CgpYG_fONjXff6H4R6mAm1yzqY&wd=&eqid=b01f84e900000a5b000000025dbe39b3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓤摧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子玉吁,更是在濱河造成了極大的恐慌照弥,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件进副,死亡現(xiàn)場離奇詭異这揣,居然都是意外死亡悔常,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門给赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來机打,“玉大人,你說我怎么就攤上這事片迅〔醒” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵柑蛇,是天一觀的道長芥挣。 經(jīng)常有香客問我,道長耻台,這世上最難降的妖魔是什么空免? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮盆耽,結(jié)果婚禮上蹋砚,老公的妹妹穿的比我還像新娘。我一直安慰自己摄杂,他們只是感情好坝咐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匙姜,像睡著了一般畅厢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氮昧,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天框杜,我揣著相機(jī)與錄音,去河邊找鬼袖肥。 笑死咪辱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椎组。 我是一名探鬼主播油狂,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼寸癌!你這毒婦竟也來了专筷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤蒸苇,失蹤者是張志新(化名)和其女友劉穎磷蛹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溪烤,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡味咳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年庇勃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片槽驶。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡责嚷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掂铐,到底是詐尸還是另有隱情罕拂,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布堡纬,位于F島的核電站聂受,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏烤镐。R本人自食惡果不足惜蛋济,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炮叶。 院中可真熱鬧碗旅,春花似錦、人聲如沸镜悉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侣肄。三九已至旧困,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稼锅,已是汗流浹背吼具。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留矩距,地道東北人拗盒。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像锥债,于是被迫代替她去往敵國和親陡蝇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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