编写数据库时Android应用程序崩溃

时间:2015-01-29 23:15:01

标签: android sqlite

我想将一些数据写入SQLite数据库。 在我的应用程序中,我有一个主要的单例类,代码为:

public class Singleton extends Application {

    public static DBHelper dbHelper;
    public static SQLiteDatabase db;

    @Override
    public void onCreate() {
        super.onCreate();
        dbHelper = new DBHelper(this);
        db = dbHelper.getWritableDatabase();

    }
}

DBHelper.java:

public class DBHelper extends SQLiteOpenHelper {

    public DBHelper(Context context) {
        super(context, "myDB", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE AlarmListTable ("
            + "id integer primary key autoincrement, "
            + "time text, "
            + "date text, "
            + "comment text "
            + ");");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

我有一个活动,我有一个方法:

ContentValues cv = new ContentValues();
cv.put("time", entTime.getText().toString());
cv.put("date", entTime.getText().toString());
cv.put("comment", entTime.getText().toString());
Singleton.db.insert("AlarmListTable", null, cv);

但应用程序崩溃了。 请帮帮我。这有什么问题?

logcat的:

FATAL EXCEPTION: main
java.lang.NullPointerException at Singleton.db.insert("AlarmListTable", null, cv);

2 个答案:

答案 0 :(得分:1)

主要问题可能是因为您忘记在字符串末尾删除昏迷。在每个昏迷后添加一个空格。

   db.execSQL("CREATE TABLE AlarmListTable ("
                + "id integer primary key autoincrement, "
                + "time text, "
                + "date text, "
                + "comment text "
                + ");");

您必须添加有关实际错误的更多详细信息,以确定问题的来源。

答案 1 :(得分:0)

看起来Singleton.db为空。

您确定onCreate()中的Singleton被调用了吗?对于Application子类,您需要在android:name文件的AndroidManifest.xml属性中添加子类的名称。