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 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