访问SqlIte数据库时应用程序崩溃

时间:2012-10-26 05:21:43

标签: android crash-dumps android-sqlite

我正在通过我的应用创建一个sqlite数据库。插入和表创建的查询执行得很好。但是当我检索数据时,我的应用程序崩溃了以下日志

Caused by: android.database.sqlite.SQLiteException: no such table: FileRevisionHistory:while compiling: SELECT FileName, FileRevision FROM FileRevisionHistory WHERE FileName=?

SQL表创建的代码就是这个

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;


public class FileRevision_dbHandler extends SQLiteOpenHelper {

    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 2;

    // Database Name
    private static final String DATABASE_NAME = "revisionHistoryManager";

    // Contacts table name
    private static final String TABLE_REVISION_HISTORY = "FileRevisionHistory";

    // Contacts Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_NAME = "FileName";
    private static final String KEY_REVISION = "FileRevision";

    public FileRevision_dbHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {

        String CREATE_FILE_REVISION_TABLE = "CREATE TABLE  "  + TABLE_REVISION_HISTORY + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
                + KEY_REVISION + " TEXT" + ")";
        db.execSQL(CREATE_FILE_REVISION_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_REVISION_HISTORY);

        // Create tables again
        onCreate(db);
    }

    /**
     * All CRUD(Create, Read, Update, Delete) Operations
     */

    // Adding new contact
    void addFileRevision(FileRevision filerevision) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, filerevision.mFileName); // Contact Name
        values.put(KEY_REVISION, filerevision.mRevision); // Contact Phone

        // Inserting Row
        db.insert(TABLE_REVISION_HISTORY, null, values);
        db.close(); // Closing database connection
    }

    // Getting single contact
    String getFileRevision(String inFileName) {
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_REVISION_HISTORY, new String[] {KEY_NAME, KEY_REVISION }, KEY_NAME + "=?",
                new String[] { inFileName }, null, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();

        FileRevision filerevision = new FileRevision();
        filerevision.mFileName = (String)cursor.getString(cursor.getColumnIndex(KEY_NAME));
        filerevision.mRevision = (String)cursor.getString(cursor.getColumnIndex(KEY_REVISION));
        db.close();
        // return contact
        return filerevision.mRevision;
    }

}


}

为什么没有创建该表?

1 个答案:

答案 0 :(得分:0)

不是仅提供表名,而是使用以下内容更新您的查询:

Cursor cursor = db.query(TABLE_REVISION_HISTORY, new String[] {KEY_NAME, KEY_REVISION }, KEY_NAME + "=?",
                new String[] { inFileName }, null, null, null, null);