1

嗨,我的 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(); 
    }

}

这是错误消息:

在此处输入图像描述

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

Source not found. 

在 LogCat 我看到这个:

在此处输入图像描述

我讨厌这个调试器:D

4

1 回答 1

3

)您在 create table 语句中忘记了:

private static final String KLASSEN_CREATE = "CREATE TABLE Stundenplan(" +
    "_id INTEGER PRIMARY KEY AUTOINCREMENT, "+
            "name TEXT NOT NULL);";
于 2013-01-06T14:11:18.607 回答