一、SQLite数据库
-
Android集成了SQlite数据库,每个应用均可以使用
-
SQLite数据库具有轻量级,运行速度快,适合移动设备使用
-
SQLite支持SQL语法
-
SQLite数据库支持五种数据类型:
NULL、INTERGER(整型)、REAL(浮点数)、TEXT(字符串文本)、BLOB(二进制对象)
二、相关类
- SQLiteOpenHelper:抽象类,我们通过继承该类,然后重写数据库创建以及更新的方法,我们还可以通过该类的对象获得数据库实例,或者关闭数据库!
- SQLiteDatabase:数据库访问类:我们可以通过该类的对象来对数据库做一些增删改查的操作
- Cursor:游标,可以简单理解为指向数据库中某 一个记录的指针!
三、使用SQLiteOpenHelper创建数据库和版本管理
public class MyDBOpenHelper extends SQLiteOpenHelper {
//初始化MyDBOpenHelper,数据库名为name,版本号version
public MyDBOpenHelper(Context context, String name, CursorFactory factory, int version){
super(context, name, null, version);
}
//数据库第一次创建时被调用
@Override
public void onCreate(SQLiteDatabase db) {
//创建一个person表,包括了两个字段personid(整型,主键,自动增长),name(字符串类型)
db.execSQL("CREATE TABLE person(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20))");
}
//软件版本号发生改变时调用
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
四、数据库的操作
public class MainActivity extends AppCompatActivity{
private Context mContext;
private SQLiteDatabase db; //数据库
private MyDBOpenHelper myDBHelper; //数据库管理
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
//创建数据库管理,并初始化,数据库名称为my.db,版本号1
myDBHelper = new MyDBOpenHelper(mContext, "my.db", null, 1);
}
//使用Android提供的API操作SQLite
public void editSQLiteByAndroid(){
//获取数据库
db = myDBHelper.getWritableDatabase();
// 1. 插入数据
ContentValues values1 = new ContentValues();
values1.put("name", "Tom"); //设置要插入数据库的数据
db.insert("person", null, values1);//将 name = Tom 的数据插入到person表中
// 2. 查询数据
StringBuilder sb = new StringBuilder();
//参数依次是:表名,列名,where约束条件,where中占位符提供具体的值,指定group by的列,进一步约束
Cursor cursor = db.query("person", null, null, null, null, null, null);
if (cursor.moveToFirst()) { //循环获取所有数据,插入到sb之中
do {
int pid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
sb.append("id:" + pid + ":" + name + "\n");
} while (cursor.moveToNext());
}
cursor.close();
Toast.makeText(mContext, sb.toString(), Toast.LENGTH_SHORT).show(); //显示所有数据
// 3. 修改数据
ContentValues values2 = new ContentValues();
values2.put("name", "Alice");
//参数依次是表名,修改后的值,where条件,以及约束,如果不指定三四两个参数,
//会更改所有行,这里指修改 name = Tom 那一项数据为 name = Alice
db.update("person", values2, "name = ?", new String[]{"Tom"});
// 4. 删除数据
//参数依次是表名,以及where条件与约束, 这里指删除 personid = 3 的那一项
db.delete("person", "personid = ?", new String[]{"3"});
}
//使用SQL语句操作数据库
public void editSQLiteBySQL(){
// 获取数据库
db = myDBHelper.getWritableDatabase();
// 1. 插入数据
//插入一项数据到person表中,name值为"Jack"
db.execSQL("INSERT INTO person(name) values(?)",new String[]{"Jack"});
// 2. 删除数据
//这里指删除 personid = 1 的那一项数据
db.execSQL("DELETE FROM person WHERE personid = ?", new String[]{"1"});
// 3. 修改数据
//这里指把 personid = 3 的那一项数据的 name 设置为 Jack
db.execSQL("UPDATE person SET name = ? WHERE personid = ?",new String[]{"Jack","3"});
// 4. 查询数据
//查询 personid = 1 的那一项数据
Cursor cursor = db.rawQuery("SELECT * FROM person WHERE personid = ?",new String[]{"1"});
if(cursor.moveToFirst())
{
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
Toast.makeText(mContext, personid+ " "+name, Toast.LENGTH_SHORT).show();
}
cursor.close();
}
}
五、数据库的查看
1、使用sqlite studio查看数据库
最新Android studio查看sqlite数据库(借助sqlite studio)
2、 使用adb查看数据库
1、配置adb环境变量
2、查看数据库内容
adb shell 启动adb
su 提升管理员权限,操作符会从$变为#
ls 查看文件目录
cd fileName 进入到某个文件下
sqlite3 databaseName.db 进入数据库
sql语句 对数据库进行操作
3、如何使用su命令(需要提升管理员权限才可以访问到数据库内容)
1、手机要访问数据库的话,需要提前对手机进行 root
2、虚拟机访问数据库,需要下载一个Target带(Google APIs)的虚拟机