根据Android Studio编译器,数据库表不存在

我收到此错误:

android.database.sqlite.SQLiteException:否这样的表:设置(代码1):,而编译时:SELECT * FROM设置

但是我已经在DatabaseHandler文件中创建了表:

public class DatabaseHandler extends SQLiteOpenHelper {

// Database Version

private static final int DATABASE_VERSION = 1;

// Database Name

private static final String DATABASE_NAME = "database.db";

//table name

private static final String TABLE_DETAILS = "details";

private static final String TABLE_FOOD = "food";

private static final String TABLE_OLDDETAILS = "oldDetails";

private static final String TABLE_SETTING = "setting";

//Table Columns names

private static final String KEY_ID = "id";

private static final String KEY_NAME = "name";

private static final String KEY_HEIGHT = "height";

private static final String KEY_WEIGHT = "weight";

private static final String KEY_CALORIES = "calories";

private static final String KEY_DATE = "date";

private static final String KEY_LEVEL = "level";

private static final String KEY_DURATION = "duration";

private static final String KEY_DAYS = "days";

public DatabaseHandler(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

// Creating Tables

@Override

public void onCreate(SQLiteDatabase db) {

String CREATE_DETAILS_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_DETAILS + "("

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_HEIGHT + " REAL," + KEY_WEIGHT + " REAL " + ")";

String CREATE_FOOD_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_FOOD + "("

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_CALORIES + " INTEGER " + ")";

String CREATE_OLDDETAILS_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_OLDDETAILS + "("

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_DATE + " TEXT," + KEY_HEIGHT + " REAL," + KEY_WEIGHT + " REAL " + ")";

String CREATE_SETTING_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_SETTING + "("

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_LEVEL + " INTEGER," + KEY_DURATION + " INTEGER," + KEY_DAYS + " INTEGER " + ")";

db.execSQL(CREATE_OLDDETAILS_TABLE);

db.execSQL(CREATE_DETAILS_TABLE);

db.execSQL(CREATE_FOOD_TABLE);

db.execSQL(CREATE_SETTING_TABLE);

}

// Upgrading database

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// Drop older table if existed

db.execSQL("DROP TABLE IF EXISTS " + TABLE_DETAILS);

db.execSQL("DROP TABLE IF EXISTS " + TABLE_OLDDETAILS);

db.execSQL("DROP TABLE IF EXISTS " + TABLE_FOOD);

db.execSQL("DROP TABLE IF EXISTS " + TABLE_SETTING);

// Create tables again

onCreate(db);

}

public boolean addSetting(int level, int duration, int days) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put(KEY_ID, 1);

values.put(KEY_LEVEL, level);

values.put(KEY_DURATION, duration);

values.put(KEY_DAYS, days);

// Inserting Row

long result = db.insert(TABLE_SETTING, null, values);

if(result == -1){

return false;

}

else{

return true;

}

}

public boolean checkSetting(){

SQLiteDatabase db = this.getWritableDatabase();

String selectQuery = "SELECT * FROM " + TABLE_SETTING;

Cursor cursor = db.rawQuery(selectQuery, null);

Boolean rowExists;

if (cursor.moveToFirst())

{

// DO SOMETHING WITH CURSOR

rowExists = true;

} else

{

// I AM EMPTY

rowExists = false;

}

return rowExists;

}

public setting getSetting() {

String selectQuery = "SELECT * FROM " + TABLE_SETTING;

SQLiteDatabase db = this.getWritableDatabase();

Cursor cursor = db.rawQuery(selectQuery, null);

if (cursor != null)

cursor.moveToFirst();

setting set = new setting(cursor.getInt(1), cursor.getInt(2), cursor.getInt(3));

return set;

}

public int updateSetting(setting set) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put(KEY_LEVEL, set.getLevel());

values.put(KEY_DURATION, set.getDuration());

values.put(KEY_DAYS, set.getDays());

Log.d("UPDATE: ", "updated all");

// updating row

return db.update(TABLE_SETTING, values, KEY_ID + " = ?", new String[] { String.valueOf(1) });

}

如您所见,虽然错误是重复发生的,但有一种“创建不存在的创建”方法,尽管此错误在我身上,但我正在尝试创建。

我正在尝试在一个片段中执行此数据库代码,您可以在此处看到它,到目前为止,似乎不是问题,我认为主要是DatabaseHandler。

如何SETTING正确创建表格,以便可以从中进行选择?

回答:

您已经在安装应用程序时更改了数据库结构,但是onCreate仅执行一次,因此您有两个选择可以使更改反映到数据库中

1.)将数据库版本递增一以执行onUpgrade以将更改应用于现有数据库

2.)从手机上手动卸载该应用以执行 onCreate

以上是 根据Android Studio编译器,数据库表不存在 的全部内容, 来源链接: utcz.com/qa/409727.html

回到顶部