1

こんにちは、Android アプリケーションに問題があります。アプリケーションに sqlite データベースを使用したいのですがonCreate()onPause()onResume()メソッドを使用したアクティビティが 1 つあります。テーブル ID と名前を作成するクラスDatenbankManagerを作成しましたが、エミュレーターでアプリケーションを起動すると、メッセージが表示され、その後アプリケーションが閉じます。

ここに私の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
    }

}

ここで私の MainActivity:

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 に答える