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

流程

1. 我們在你的gradle(app)文件里面來添加依賴環(huán)境(使用的是github上一個數(shù)據(jù)庫可視化工具)

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

你需要確保你的電腦和用來調(diào)試的手機(jī)是一個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之后,其他端口定義位置也要對應(yīng)修改

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

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

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


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

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

創(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 你也可以封裝一下再寫一個類返回一個ContenValues對象

? ? ? ? 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)在升級數(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)建臨時表

? 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");

? //刪除臨時表

? 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ù),依據(jù)值的大小可以依次被存儲為1,2,3,4,5,6,7,8.

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

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

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

DATA :包含了 年份、月份、日期。

TIME: 包含了 小時、分鐘、秒。

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起個叫myname的別名,給price起個叫myprice的別名

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

# 給t_shop起個別名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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容