2012-03-23 10 views
0

私は、このエラーに直面しています..why私は理解していなかった...ここでAndroidのsqliteの(データベース)Coulmn行方不明のエラー

が私のコードです:ここでは

package com.dswt.book; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class DatabaseHandler extends SQLiteOpenHelper { 

    private static final String DATABASE_NAME = "BookManager"; 
    private static final int DATABSE_VERSION = 1; 
    private static final String TABLE_BOOKS = "books"; 
    private static final String KEY_ID = "id"; 
    private static final String KEY_NAME = "name"; 
    private static final String KEY_EDATA = "edata"; 
    final String TAG = "addBook"; 

    public DatabaseHandler(Context context) { 
     super(context, DATABASE_NAME, null, DATABSE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_BOOK_TABLE = "CREATE TABLE " + TABLE_BOOKS + "(" + KEY_ID 
       + " INTEGER PRIMARY KEY," + KEY_EDATA + " TEXT," + KEY_NAME 
       + " TEXT " + ")"; 

     //Log.i(TAG, "error"); 

     db.execSQL(CREATE_BOOK_TABLE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS" + TABLE_BOOKS); 
     onCreate(db); 
    } 

    public void addBook(Book book) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_EDATA, book.getName()); 
     values.put(KEY_NAME, "book.getEdata()); 

     db.insert(TABLE_BOOKS, null, values); 
     db.close();// closing database connection 

     Log.i(TAG, "see the value is adding"); 
    } 

} 

は私のLOGのCATである:

03-23 17:44:18.049: I/Database(6094): sqlite returned: error code = 1, msg = table books has no column named edata 
03-23 17:44:18.049: E/Database(6094): Error inserting edata=satyam name=data display 
03-23 17:44:18.049: E/Database(6094): android.database.sqlite.SQLiteException: table books has no column named edata: , while compiling: INSERT INTO books(edata, name) VALUES(?, ?); 
03-23 17:44:18.049: E/Database(6094): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 
03-23 17:44:18.049: E/Database(6094): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92) 
03-23 17:44:18.049: E/Database(6094): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65) 
03-23 17:44:18.049: E/Database(6094): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83) 
03-23 17:44:18.049: E/Database(6094): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41) 
03-23 17:44:18.049: E/Database(6094): at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1149) 
03-23 17:44:18.049: E/Database(6094): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1569) 
03-23 17:44:18.049: E/Database(6094): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426) 
03-23 17:44:18.049: E/Database(6094): at com.dswt.book.DatabaseHandler.addBook(DatabaseHandler.java:48) 
03-23 17:44:18.049: E/Database(6094): at com.dswt.book.BookActivity.onCreate(BookActivity.java:21) 
03-23 17:44:18.049: E/Database(6094): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-23 17:44:18.049: E/Database(6094): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
03-23 17:44:18.049: E/Database(6094): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
03-23 17:44:18.049: E/Database(6094): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-23 17:44:18.049: E/Database(6094): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
03-23 17:44:18.049: E/Database(6094): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-23 17:44:18.049: E/Database(6094): at android.os.Looper.loop(Looper.java:123) 
03-23 17:44:18.049: E/Database(6094): at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-23 17:44:18.049: E/Database(6094): at java.lang.reflect.Method.invokeNative(Native Method) 
03-23 17:44:18.049: E/Database(6094): at java.lang.reflect.Method.invoke(Method.java:507) 
03-23 17:44:18.049: E/Database(6094): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-23 17:44:18.049: E/Database(6094): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-23 17:44:18.049: E/Database(6094): at dalvik.system.NativeStart.main(Native Method) 

可能であれば、このタイプのエラーに直面している人の一部が私に助けてくれます.. !!!

答えて

1

スキーマを変更した場合は、データベースをアップグレードできるようにDATABSE_VERSION(sic)を増やす必要があります。また、テーブルは予期された列で再作成されます。

+0

はい...私は問題を解決しました。 私は最初に直面しました。データベースバージョンの動的値が可能ですか? – NovusMobile

関連する問題