[android] android下创建一个sqlite数据库
Sqlite数据库是开源的c语言写的数据库,android和iphone都使用的这个,首先需要创建数据库,然后创建表和字段,android提供了一个api叫SQLiteOpenHelper数据库的打开和创建类。
具体使用比如:创建一个class叫PersonSQLiteOpenHelper用户数据库类,继承SQLiteOpenHelper,父类是个抽象类要实现onCreate()和onUpgrate()方法,此时会报错要求创建构造方法,构造方法的参数:Context上下文作用是告诉程序数据库创建在哪个目录下,Stringname数据库文件的名字,factory游标工厂一般我们都写null系统默认的,version数据库的版本从1开始,构造方法完成数据库就可以被创建。
OnCreate(SQLiteDatabasedb)方法是数据库第一次被创建时回掉,用来创建表以及初始化参数,参数就是我们创建的数据库。调用SQLiteDatabase对象的execSQL()方法执行sql语句,首先要创建表和mysql的基本一样,执行这条sql语句,createtableperson(idintegerprimarykeyautoincrement,namevarchar(20)notnulldefault“”)varchar的数字实际没有意义,给程序员看的,超过了也无所谓。
当new出来helper对象的时候,数据库并不会被创建,只有当helper对象调用了getWritableDatabase()方法或者getReadableDatabase()时候才会被创建。使用测试用例来测试一下,但是helper类需要上下文对象,测试框架提供了一个方法叫getContext()来得到上下文对象,数据库文件的地址/data/data/包名/database/下面,是私有的权限
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(); }}
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android零碎知识
- 常用的Js调Android方法,以及Android原生传值给Js
- android 使用Intent传递数据之返回结果
- AsyncTask使用和源码解析
- 在Android(安卓)java代码中如何改变文件的权限
- 在Android(安卓)Stduio 中使用requestWindowFeature(Window.FEAT