Android sqlite (база данных) Coulmn отсутствует ошибка - PullRequest
0 голосов
/ 23 марта 2012

Я не понял .. почему я сталкиваюсь с этой ошибкой ..

Вот мой код:

    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 Ответ

1 голос
/ 23 марта 2012

Если вы изменили схему, вам потребуется увеличить DATABSE_VERSION (sic), чтобы можно было обновить базу данных, и таблица будет воссоздана с ожидаемыми столбцами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...