新建一个类叫XXXContract,并在类里面静态内部类继承BaseColumn,在内部类中写建表的名字和表的列名,因为BaseColumns类里面封装了一个_ID和_count,所以ID就不需要我们自己定义了.如下代码所示:
public class PersonContract { public static class Person implements BaseColumns{ public static final String TABLE_NAME="person"; public static final String COLUMNS_NAME="name"; public static final String COLUMNS_NUMBER="number"; } }
在继承了SQLiteOpenHelper类中的onCreate方法中 用新建类的数据代替SQL语句中相关的数据
db.execSQL("create table "+ PersonContract.Person.TABLE_NAME+ " ("+PersonContract.Person._ID +" integer primary key autoincrement,"+ PersonContract.Person.COLUMNS_NAME+" varchar(20),"+ PersonContract.Person.COLUMNS_NUMBER+" varchar(20)" + ")");
原先的代码是以下这样的,如果要改动的话会很麻烦也很会出错
db.execSQL("create table person (_id integer primary key autoincrement,name varchar(20),number varchar(20))");
小注意:只有在调用openHelper时才会创建数据库,只是new 出SQLiteOpenHelper 的实例时不会创建数据库