sqlite error code = 1, msg = нет такой таблицы - PullRequest
2 голосов
/ 25 октября 2011

Я использую следующий код, для создания базы данных connection.but таблица не создается.

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.widget.TextView;

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "notification.db";
    public static final String Title = "Title";
    public static final String NotificationId = "NotificationId";
    public static final String Subject = "Subject";
    public static final String TABLE = "notification";
    public static final String Flag = "Flag";



    public DatabaseHelper(Context context)
    {
        super(context,DATABASE_NAME,null,1);
        android.util.Log.v("DatabaseHelper","Constructor called");
    }

    public void onCreate(SQLiteDatabase db)
    {
        android.util.Log.v("SQLiteDatabase","SQLiteDatabase create called");
        String sql = "create table notification"  + "( " + BaseColumns._ID
        + " integer primary key autoincrement, "+ NotificationId + " text, " + Title + " text, " + Subject + " text, "+ Flag + " text);"
        ;
        db.execSQL(sql);


    }


}

это моя функция вставки в другом классе

protected void insert(String notificationid,String title, String subject,String flag) {
        // TODO Auto-generated method stub

            eventsData = new DatabaseHelper(this);
            Log.i("insert", "inside insert");
            Log.i(TAG, "insert"+notificationid);
            Log.i(TAG, "insert"+title);
            Log.i(TAG, "insert"+subject);
            Log.i(TAG, "insert"+flag);
            SQLiteDatabase db = eventsData.getWritableDatabase();
            android.util.Log.v("insert","SQLiteDatabase called");
            ContentValues values = new ContentValues();
            android.util.Log.v("insert","ContentValues called");
            values.put(DatabaseHelper.NotificationId, notificationid);
            values.put(DatabaseHelper.Title, title);
            values.put(DatabaseHelper.Subject, subject);
            values.put(DatabaseHelper.Flag, flag);
            android.util.Log.v("insert","after values.put");
            db.insert(DatabaseHelper.TABLE, null, values);
            Log.i("insert", "after insert");

    }

в то время какПри вставке данных я получаю сообщение об ошибке, такая таблица не найдена. Однако тот же код работает правильно, если я создаю табличное уведомление из консольной оболочки. Может ли кто-нибудь помочь мне в этом.Спасибо.

Ответы [ 3 ]

14 голосов
/ 25 октября 2011

Я заметил, что у вас не реализован onUpgrade.Возможно ли, что при первом запуске этой базы данных была создана, но логика таблицы не была реализована?Возможно, попробуйте очистить данные через Настройки -> Приложения -> Управление приложениями.Просто предположение

1 голос
/ 03 декабря 2012

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

1 голос
/ 25 октября 2011

Метод onCreate не вызывается.Создайте метод say ... createDatabase и поместите туда свой код onCreate, затем вызовите createDatabase, так как

DataBaseHelper myDataBaseHelper;
myDataBaseHelper.createDatabase();

onCreate обычно используется с методом onUpgrade.

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