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、源碼:

相關文章
相關標籤/搜索