Android中SQLite构造函数参数Context的几点注意事项
最近在写一个Android的程序,用到了SQLite数据库,在主项目中刚开始使用sqlite之前,我先在单独的一个项目中测试了一下SQLite的使用,只有一个Activity,一个SQLiteHelper,使用的时候好好的,当我在主项目中使用的时候就报错了,总是空指针错误,纠结了几天之后终于搞定了,现在我写出来,希望能帮到遇到同样问题的朋友们!
我的测试项目:
结构图:
DBHleper类代码:
package com.avin.android;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBHelper extends SQLiteOpenHelper {
public static final int VERSION = 1;
/**
* 作为SQLiteOpenHelper子类必须有的构造方法
* @param context
* @param name 数据库名字
* @param factory
* @param version
*/
public DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
Log.d("Avin","this is dbhelper 4 elements");
// TODO Auto-generated constructor stub
}
public DBHelper(Context context,String name, int version){
this(context,name,null,version);
Log.d("Avin","this is dbhelper 3 elements");
}
public DBHelper(Context context,String name){
this(context,name,VERSION);
Log.d("Avin","this is dbhelper 2 elements");
}
@Override
/**
* 第一次创建数据库的时候调用,而且是得到readableDatabase或者writeDatabase时才执行
*/
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table floats(id integer primary key autoincrement ,flt_cand text not null ,flt_key text)");
Log.d("Avin","floats created...");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
相关推荐
是一道经常出现在前端面试时的问题。如果只是简单的了解new关键字是实例化构造函数获取对象,是万万不能够的。更深入的层级发生了什么呢?同时面试官想从这道题里面考察什么呢?下面胡哥为各位小伙伴一一来解密。