首先应在AndroidManifest.xml中声明Junit测试:
用来进行单元测试:使用Junit要继承AndroidTestCase
测试代码:
package org.test1.activity;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
import android.util.Log;
public class DBTest extends AndroidTestCase {
private static final String TAG = "DBTest";
public void createDatabase() {
DBOpenHelper db = new DBOpenHelper(this.getContext());
SQLiteDatabase sqliteDatabase = db.getReadableDatabase();
Log.d(TAG, "success");
}
}
SQLite数据库要使用,必须继承SQLiteOpenHelper这个抽象类。
SQLiteOpenHelper抽象类,用来实现数据库,表的创建的和数据库版本的控制。
继承SQLiteOpenHelper抽象类,需要实现两个方法:
当产生数据库实例的时候,如果数据库不存在,Android系统就会自动生成一个数据库,接着调用onCreate()方法,onCreate()方法在初次使用数据库的时候才会被调用。
public void onCreate(SQLiteDatabase db){
//该方法在初次使用软件的时候创建数据库表
}
另一个方法是onUpgrade方法,该方法在数据库版本发生变化的时候调用
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
//升级软件时候更新数据库表结构
}
一般在升级的时候才需要改变版本号,而数据库的版本号是由程序员控制的。
SQLiteOpenHelper的构造方法:
public SQLiteOpenHelper(Context context,String name,Cursor factory,int version){
//第一个参数是上下文
//第二个参数是数据库名称
//第三个参数是游标工厂,默认为null,表示使用系统默认的
//第四个参数是数据库的版本号
}
如何获取数据库实例:获取数据库实例就是获取数据库操作类SQLiteDatabase
使用DBOpenHelper类的getWritableDatabase()和getReadableDatabase()方法。
SQLiteDatabase db=DBOpenHelper.getWritableDatabase();使用该方法打开数据库的时候,当数据库磁盘空间满的时候,会发生错误。数据库就只能读不能写。
SQLiteDatabase db=DBOpenHelper.getReadableDatabase();使用该方法以读写方式打开数据库,当磁盘空间满的时候,使用该方法会打开失败,并继续尝试以只读方式打开数据库。
测试代码:
package org.test1.activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBOpenHelper extends SQLiteOpenHelper {
// 数据库名称
private static final String DATABASE_NAME = "contact_info.db";
// 数据库版本号
private static final int DATABASE_VERSION = 1;
// 构造方法
public DBOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//该方法在初次使用软件的时候创建数据库表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE contactinfo( _id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(20),msn varchar(50),qq varchar(15),mobile varchar(50),icon INTEGER)");
}
//该方法用于更新数据库的表结构
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Junit测试成功: