Android连载34-更新数据库以及使用SDK自带adb工具

1、使用adb shell功能

  • Book表是没法经过File Explorer来看的,因此咱们可使用android SDK自带的一个工具来进行查看,这个工具就是adb
  • 首先咱们要把该工具所在的地址配置环境变量中去才能够在dos窗口中直接调用。
    34.1
  • 34.2
  • 输入adb shell,进入设备控制台
  • 输入cd /data/data/com.example.databasetest/databases/,进入到android目录下
  • ls查看文件夹中有什么
  • 里面含有两个文件,一个就是咱们建立的BookStore.db和一个journal结尾的文件,这个文件就是为了让数据库可以支持事务而产生的临时日志文件,一般这种文件的大小都是0
  • 使用sqlite3 数据库名 来打开数据库,而后输入.table来查看数据库中有哪些表,能够看到有两张表,其中android_metadata表是每一个数据库中都会自动生成的,而另外一张Book表就是咱们在android app中生成的。
  • 输入.exit或者.quit退出数据库的编辑,再输入exite就是退出设备控制台。

2、升级数据库

  • 咱们不能只能建立这一个表就结束了,咱们还建立更多的表,因此仍是要在MyDatabaseHelper.java中修改函数来实现升级数据库的功能
package com.example.databasetest;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

public class MyDatabaseHelper extends SQLiteOpenHelper{
	public static final String CREATE_BOOK = "create table Book (" + "id integer primary key autoincrement," + "author text," + "price real,"+ "pages integer," + "name text)";
	
	public static final String CREATE_CATEGORY = "create table Category(" + "id integer primary key autoincrement" + "category_name text" + "category_code integer";
	
	private Context mContext;
	
	public MyDatabaseHelper(Context context,String name,CursorFactory factory,int version) {
		super(context,name,factory,version);
		mContext = context;
	}
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL(CREATE_BOOK);
		db.execSQL(CREATE_CATEGORY);
		Toast.makeText(mContext ,"Create succeeded",Toast.LENGTH_LONG).show();
	}
	
	@Override
	public void onUpgrade(SQLiteDatabase db,int oldVersion ,int newVersion) {
		db.execSQL("drop table if exists Book");
		db.execSQL("drop table if exists Category");
		onCreate(db);
	}
}
  • 相比上一个版本就是增长升级数据库的SQL语句以及执行“升级数据库”的SQL语句。以及修改了升级函数。
  • 这个升级函数能够讲一下,若是发现已经存在Book和Category表,就会先扔这两个表,而后再执行onCreate方法。然而如何让这个函数执行呢?咱们就须要修改主活动程序MainActivity.java
dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,2);
  • 这里只须要修改一行语句就能够,就是第四个参数改成2,表明着数据升版了,那么有人问,若是是第一次建立呢?这无所谓啊,第一次建立,drop语句不生效而已,仍然会继续执行onCreate()函数。
  • 咱们查看一下adb shell建立成功了没有
    34.3

3、添加数据

  • 其实android是支持SQL语句,可是为了可以增强交互性,android程序开发即便不用SQL语句也能够对数据库进行“增删改查”一系列操做的。
  • getReadableDatabase()和·getWritableDatabase()`方法是能够建立和升级数据库的,这两个方法还会返回一个SQLiteDatabase对象。
  • 具体如何进行咱们下次连载再进行编写。

4、源码: