Android中SQLite构造函数参数Context的几点注意事项

最近在写一个Android的程序,用到了SQLite数据库,在主项目中刚开始使用sqlite之前,我先在单独的一个项目中测试了一下SQLite的使用,只有一个Activity,一个SQLiteHelper,使用的时候好好的,当我在主项目中使用的时候就报错了,总是空指针错误,纠结了几天之后终于搞定了,现在我写出来,希望能帮到遇到同样问题的朋友们!

 

我的测试项目:

结构图:

Android中SQLite构造函数参数Context的几点注意事项

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

 }

}

相关推荐