2015-06-12 2 views
1

я создать таблицу с этим, в то время как «KEY_IMAGE_PATH» есть «образ»стола «TABLENAME» не имеет столбца с именем «имя_столбец», когда у него есть один

private class foodieItemDBOpenHelper extends SQLiteOpenHelper { 
    private static final String DATABASE_CREATE = "create table " 
      + DATABASE_TABLE + "(" + KEY_ID 
      + " integer primary key autoincrement, " +KEY_IMAGE_PATH +"   text no null, " 
      + KEY_RATING + " text, " + KEY_TITLE + " text);"; 

    public foodieItemDBOpenHelper(Context c, String dbname, 
          SQLiteDatabase.CursorFactory factory, int version) { 
     super(c, dbname, factory, version); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(DATABASE_CREATE); 
    } 

при попытке добавить данные в базу данных она проливает эта ошибка:

E/SQLiteLog﹕ (1) table foodieItems has no column named image 
06-12 13:40:34.469 12377-12377/mi.ur.de.foodieappstarterproject E/SQLiteDatabase﹕ Error inserting rating=3 title=null image=/storage/sdcard/Pictures/FoodieApp/IMG_20150612_134034.jpg 
    android.database.sqlite.SQLiteException: table foodieItems has no column named image (code 1): , while compiling: INSERT INTO foodieItems(rating,title,image) VALUES (?,?,?) 

Есть ли что-то не так с моей настройкой базы данных?

Edit: вставка запроса

public long addFoodieItem(FoodieItem item) { 
    ContentValues newFoodieValues = new ContentValues(); 


    newFoodieValues.put(KEY_IMAGE_PATH, item.getImagePath()); 
    newFoodieValues.put(KEY_RATING, 3); 
    newFoodieValues.put(KEY_TITLE, item.getTitle()); 

    return db.insert(DATABASE_TABLE,null, newFoodieValues); 
} 
+0

Должен я увидеть ваш запрос вставки – Amsheer

+0

добавил к вопросу – Akri

+0

Что об этих KEY_IMAGE_PATH, KEY_RATING и т.д. значения – Amsheer

ответ

0

Я recommed вам изменить запрос:

private static final String DATABASE_CREATE = "CREATE TABLE " 
     + DATABASE_TABLE + "(" + KEY_ID 
     + " INTEGER primary key autoincrement, " +KEY_IMAGE_PATH +" TEXT NOT null, " 
     + KEY_RATING + " TEXT, " + KEY_TITLE + " TEXT);"; 

должна быть TEXT НЕ нуля, это является причиной того, что поле, определенное в KEY_IMAGE_PATH не может быть создано!

После этого изменения, вероятно, вам необходимо удалить приложение, потому что структура таблицы изменилась!

0

В вашем заявлении создания таблицы, "текст не пустой" не является действительным DDL. Он должен быть «text not null», если вы хотите, чтобы в поле не было нулевых значений.

+0

Уверены ли вы в этом. Его запрос работает, я пытался? – Amsheer

+0

Да, но это не исправляет основную проблему, я также пробовал ее только с «текстом» – Akri

+0

Я скопировал большую часть класса из базы данных с двумя столбцами + id. есть ли какой-либо параметр, указывающий базе данных, сколько столбцов он должен иметь или они просто добавлены, когда я ввожу их в свой оператор create – Akri