为什么我无法在Android应用程序中创建SQLite数据库

时间:2013-01-06 14:04:37

标签: android database sqlite android-emulator oncreate

您好我的Android应用程序有问题。我想为我的应用程序使用sqlite数据库,并且我有一个使用onCreate()onPause()onResume()方法的活动。我已经构建了一个类DatenbankManager,其中创建了一个表ID和名称但是如果我使用模拟器启动我的应用程序,我会收到一条消息,然后我的应用程序关闭。

这里是我的DatenbankManager类:

package de.tarasov.database_example_tarasov;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatenbankManager extends SQLiteOpenHelper {

    private static final String DB_Name = "Stundenplanname.db";
    private static final int DB_VERSION = 1;
    private static final String KLASSEN_CREATE = "CREATE TABLE Stundenplan(" +
    "_id INTEGER PRIMARY KEY AUTOINCREMENT, "+
            "name TEXT NOT NULL";
    private static final String KLASSEN_DROP = "DROP TABLE IF EXIST Stundenplan";

    //Konstruktor
    public DatenbankManager(Context context) {
        super(context, DB_Name, null, DB_VERSION);

    }

    //Methode wenn eine Datenbank erstellt werden muss
    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(KLASSEN_CREATE);
    }

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

            db.execSQL(KLASSEN_DROP); // Löscht Tabelle wenn nicht vorhanden 
            onCreate(db); //Erstellt Tabelle
    }

}

这是我的主要活动:

package de.tarasov.database_example_tarasov;

import android.os.Bundle;
import android.widget.Toast;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;

public class MainActivity extends Activity {

    private SQLiteDatabase mDatenbank;
    private DatenbankManager mHelper;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mHelper = new DatenbankManager(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mDatenbank.close(); //Schließt Datenbank

        Toast.makeText(this, 
                getResources().getString(R.string.db_close),
                Toast.LENGTH_SHORT).show(); 
    }

    @Override
    protected void onResume() {     
        super.onResume();
        mDatenbank = mHelper.getReadableDatabase(); //Datenbank öffnen

        //Gibt Kurztext aus
        Toast.makeText(this, 
                getResources().getString(R.string.db_open),
                Toast.LENGTH_SHORT).show(); 
    }

}

这是错误消息:

enter image description here

如果我进行调试,我会看到:

Source not found. 
在LogCat中我看到了这个:

enter image description here

我讨厌这个debuger:D

1 个答案:

答案 0 :(得分:3)

您在create table语句中忘记了)

private static final String KLASSEN_CREATE = "CREATE TABLE Stundenplan(" +
    "_id INTEGER PRIMARY KEY AUTOINCREMENT, "+
            "name TEXT NOT NULL);";