Android SqlLite Проблема с добавлением данных - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь вставить данные в локальное хранилище с помощью SQLite, но возникает ошибка E / SQLiteLog: (1) в таблице Корзина нет столбца с именем product_discount. Код базы данных sqlite:

 public class DatabaseHandler extends SQLiteOpenHelper {

private static final String TAG = "DatabaseHandler";
private static final String DATABASE_NAME = "CartItemDetails";
private static final int DATABASE_VERSION = 4;
private static final String TABLE_CART = "Cart";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "product_name";
private static final String KEY_PRODUCT_ID = "product_id";
private static final String KEY_SELECTED_QUANTITY = "product_selected_quantity";
private static final String KEY_ITEM_PRICE = "product_price";
private static final String KEY_DISCOUNT_PRICE = "product_discount";
private static final String KEY_IMAGE_URLS = "product_image_urls";
private static final String KEY_BRAND_NAME = "product_brand";

public DatabaseHandler(@Nullable Context context) {
    super(context,DATABASE_NAME,null,DATABASE_VERSION);
}

//Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_CART_TABLE = "CREATE TABLE " + TABLE_CART + "("
            +KEY_ID + "INTEGER PRIMARY KEY," + KEY_NAME + "TEXT" + KEY_PRODUCT_ID + "TEXT"
            + KEY_SELECTED_QUANTITY + "TEXT" + KEY_ITEM_PRICE + "TEXT" + KEY_DISCOUNT_PRICE + "TEXT"
            + KEY_IMAGE_URLS + "TEXT" + KEY_BRAND_NAME + "TEXT" +")";

    db.execSQL(CREATE_CART_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {

    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CART);

    // Create tables again
    onCreate(db);
}

//Code to add the new CartItems
void addCartItems(CartDB cart){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_NAME,cart.getItem_name());
    values.put(KEY_PRODUCT_ID,cart.getItem_id());
    values.put(KEY_SELECTED_QUANTITY,cart.getItem_quantity());
    values.put(KEY_ITEM_PRICE,cart.getItem_price());
    values.put(KEY_DISCOUNT_PRICE,cart.getItem_discount());
    values.put(KEY_IMAGE_URLS,cart.getItem_url());
    values.put(KEY_BRAND_NAME,cart.getItem_brand());
    db.insert(TABLE_CART,null,values);
    db.close();

    Log.d(TAG, "addCartItems: Name" +cart +"to" + TABLE_CART);
}

Я пытался очистка хранилища изменила мою версию_базы_данных, имя и также попыталась удалить, как указано в Android SQLite проблема - таблица ... не имеет столбца с именем , но не смогла решить проблему. нужна помощь спасибо.

мой Logcat


2020-04-11 13:16:25.707 10878-10878/com.example.myconsumer E/SQLiteLog: (1) table Cart has no column named product_discount
2020-04-11 13:16:25.713 10878-10878/com.example.myconsumer E/SQLiteDatabase: Error inserting product_discount=0 product_id=HwdUQPb1nfKq549591Jg product_selected_quantity=1 product_price=100 product_brand=getting started product_image_urls=null product_name=test1 from {P:10878;U:10546}
    android.database.sqlite.SQLiteException: table Cart has no column named product_discount (code 1 SQLITE_ERROR): , while compiling: INSERT INTO Cart(product_discount,product_id,product_selected_quantity,product_price,product_brand,product_image_urls,product_name) VALUES (?,?,?,?,?,?,?)

1 Ответ

1 голос
/ 11 апреля 2020

Я думаю, вам не хватает пробела и запятой; пробел до TEXT и запятая после него. Пожалуйста, измените код следующим образом

 String CREATE_CART_TABLE = "CREATE TABLE " + TABLE_CART + "("
                        +KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_PRODUCT_ID + " TEXT,"
                        + KEY_SELECTED_QUANTITY + " TEXT," + KEY_ITEM_PRICE + " TEXT," + KEY_DISCOUNT_PRICE + " TEXT,"
                        + KEY_IMAGE_URLS + " TEXT," + KEY_BRAND_NAME + " TEXT" +")";

                db.execSQL(CREATE_CART_TABLE);

Надеюсь, это поможет .....

...