Имеет небольшую проблему с созданием новых таблиц. Когда я использую команду CREATE TABLE, мои новые таблицы формируются так, как должны, но когда я выхожу из действия, приложение падает, и я получаю TABLE УЖЕ СУЩЕСТВУЮЩИХ в logcat. Если я использую CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ, новая таблица не формируется, а просто добавляет мои новые строки данных в предыдущую таблицу, и это не сбой. Что не так с этим? Я хотел бы добавить таблицу, не давая мне уже существовать, и я бы хотел, чтобы она добавлялась без добавления строк в другую таблицу.android sqlite CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ
SqliteHelper Класс:
public class MySQLiteHelper extends SQLiteOpenHelper {
public static final String TABLE_NAME = MainActivity.NameName;
public static final String COLUMN_ID = "_id";
public static final String COLUMN_COMMENT = "comment";
public static final String COLUMN_LAT = "lat";
public static final String COLUMN_LONG = "long";
public static final String COLUMN_RADI = "radi";
private static final String DATABASE_NAME = "spraylogs.db";
private static final int DATABASE_VERSION = 1;
public static final String NEWTABLE = "CREATE TABLE "
+ TABLE_COMMENTS + "(" + COLUMN_ID
+ " integer primary key autoincrement, " + COLUMN_COMMENT
+ " text not null," + COLUMN_LAT+ "," + COLUMN_LONG + "," + COLUMN_RADI + ");";
public static final String SaveIt = "CREATE TABLE IF NOT EXISTS "
+ TABLE_COMMENTS + "(" + COLUMN_ID
+ " integer primary key autoincrement, " + COLUMN_COMMENT
+ " text not null," + COLUMN_LAT+ "," + COLUMN_LONG + "," + COLUMN_RADI + ");";
MySQLiteHelper(Context context) {
super(context, context.getExternalFilesDir(null).getAbsolutePath() + "/" + DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(MySQLiteHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + NEWTABLE);
onCreate(db);
}
}
Я не понимаю, почему CREATE TABLE IF NOT EXISTS является добавление строк в предыдущей таблице. – johnsonjp34
Это не так, но если у вас есть код, который добавит строку, он добавит его в существующую таблицу - CREATE IF NOT EXISTS не удалит старые данные. –