最近在寫一個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
}
}