[android] android下开创一个sqlite数据库

Sqlite数据库是开源的c语言写的数据库,android和iphone都选择的这多少个,首先需要制造数据库,然后成立表和字段,android提供了一个api叫SQLiteOpenHelper数据库的开拓和创立类。

 

现实应用诸如:创制一个class叫PersonSQLiteOpenHelper用户数据库类,继承SQLiteOpenHelper,父类是个抽象类要落实onCreate()和onUpgrate()方法,此时会报错要求创立构造方法,构造方法的参数:Context上下文功能是告诉程序数据库创制在哪些目录下,String name数据库文件的名字,factory游标工厂一般我们都写null系统默认的,version数据库的本子从1开首,构造方法完成数据库就可以被创立。

 

OnCreate(SQLiteDatabase db)方法是数据库第一次被成立时回掉,用来创设表以及起初化参数,参数就是我们创立的数据库。调用SQLiteDatabase对象的execSQL()方法执行sql语句,首先要创设表和mysql的基本一致,执行这条sql语句,create table person (id integer primary key autoincrement,name  varchar(20) not null default “” ) varchar的数字其实并未意思,给程序员看的,超过了也不在乎。

 

当new出来helper对象的时候,数据库并不会被创立,唯有当helper对象调用了getWritableDatabase()方法或者getReadableDatabase()时候才会被创立。使用测试用例来测试一下,可是helper类需要上下文对象,测试框架提供了一个主意叫getContext()来得到上下文对象,数据库文件的地点/data/data/包名/database/下边,是私家的权力

图片 1

helper代码:

 

package com.tsh.database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {
    /**
     * 构造方法
     * @param context
     */
    public PersonSQLiteOpenHelper(Context context) {
        super(context, "person.db", null, 1);
    }
    /**
     * 数据库第一次创建完成的回调
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql="create table person (id integer primary key autoincrement,name varchar(10) not null default '')";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

 

测试用例:

package com.tsh.database.test;

import com.tsh.database.PersonSQLiteOpenHelper;

import android.test.AndroidTestCase;

public class TestPersonDb extends AndroidTestCase {
    public void testPerson() throws Exception{
        PersonSQLiteOpenHelper helper =new PersonSQLiteOpenHelper(getContext());
        helper.getWritableDatabase();
    }
}

 

网站地图xml地图