Как устранить ошибку sqlite нет такой таблицы в android студии? - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть эта проблема с моим приложением android, действие DrinkCategoryActivity должно получать свои данные из таблицы из DataBaseHelper, но когда я щелкаю по любому элементу из представления списка DrinkActivity, которое вызывает DrinkCategoryActivity, возникает ошибка, которая является ошибкой sq lite, это код DrinkCategoryActivation, за которым следует DatabaseHelper

public class DrinkCategoryActivity extends Activity {
private SQLiteDatabase db;
private Cursor cursor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_drink_category);
    SQLiteOpenHelper starbuzzDatabaseHelper = new StarbuzzDatabaseHelper(this);
    ListView listDrinks = (ListView) findViewById(R.id.list_drinks);
    try {
        db = starbuzzDatabaseHelper.getReadableDatabase();
        cursor = db.query("DRINK",
                new String[]{"_id", "NAME"},
                null, null, null, null, null);
        SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1,
                cursor,
                new String[]{"NAME"},
                new int[]{android.R.id.text1},
                0);
        listDrinks.setAdapter(listAdapter);
    } catch(SQLiteException e) {
        Toast toast = Toast.makeText(this, "Database unavailable", Toast.LENGTH_SHORT);
        toast.show();
    }

    //Create the listener
    AdapterView.OnItemClickListener itemClickListener =
            new AdapterView.OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> listDrinks,
                                        View itemView,
                                        int position,
                                        long id) {
                    //Pass the drink the user clicks on to DrinkActivity
                    Intent intent = new Intent(DrinkCategoryActivity.this,
                            DrinkActivity.class);
                    intent.putExtra(DrinkActivity.EXTRA_DRINKID, (int) id);
                    startActivity(intent);
                }
            };

    //Assign the listener to the list view
    listDrinks.setOnItemClickListener(itemClickListener);
}

@Override
public void onDestroy(){
    super.onDestroy();
    cursor.close();
    db.close();
}}

, а это DataBaseHelper

public class StarbuzzDatabaseHelper extends SQLiteOpenHelper {

private static final String DB_NAME = "starbuzz"; // the name of our database
private static final int DB_VERSION = 2; // the version of the database

StarbuzzDatabaseHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    updateMyDatabase(db, 0, DB_VERSION);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    updateMyDatabase(db, oldVersion, newVersion);
}

private static void insertDrink(SQLiteDatabase db, String name, String description,
                                int resourceId) {
    ContentValues drinkValues = new ContentValues();
    drinkValues.put("NAME", name);
    drinkValues.put("DESCRIPTION", description);
    drinkValues.put("IMAGE_RESOURCE_ID", resourceId);
    db.insert("DRINK", null, drinkValues);
}

private void updateMyDatabase(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 1) {
        db.execSQL("CREATE TABLE DRINK (_id INTEGER PRIMARY KEY AUTOINCREMENT, "
                + "NAME TEXT, "
                + "DESCRIPTION TEXT, "
                + "IMAGE_RESOURCE_ID INTEGER);");
        insertDrink(db, "Latte", "Espresso and steamed milk", R.drawable.latte);
        insertDrink(db, "Cappuccino", "Espresso, hot milk and steamed-milk foam",
                R.drawable.cappuccino);
        insertDrink(db, "Filter", "Our best drip coffee", R.drawable.filter);
    }
    if (oldVersion < 2) {
        db.execSQL("ALTER TABLE DRINK ADD COLUMN FAVORITE NUMERIC;");
    }
}

}

и это ошибка E / SQLiteLog: (1) нет такой таблицы: DRINK

...