2012-10-26 85 views
0

我正在通过我的应用程序创建一个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; 
    } 

} 


} 

为什么不获取创建塔表?

+0

尽量增加你的数据库版本,这样的onUpdate会火,你的数据库将与新的表被重新创建。 –

+0

尝试卸载并安装应用程序,然后检查。 – jeet

+0

卸载帮助... thanx – Ankuj

回答

0

而不是仅仅提供表名,具有以下更新查询:

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