android sqlite CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ

Имеет небольшую проблему с созданием новых таблиц. Когда я использую команду CREATE TABLE, мои новые таблицы формируются так, как должны, но когда я выхожу из действия, приложение падает, и я получаю TABLE УЖЕ СУЩЕСТВУЮЩИХ в logcat. Если я использую 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 генерирует исключение, если таблица уже существует. CREATE TABLE IF NOT EXISTS , создаст таблицу, если она не существует, или проигнорируйте команду, если это произойдет. Если вы хотите удалить старую таблицу, используйте DELETE TABLE IF EXISTS перед CREATE TABLE . Если вы хотите изменить схему, используйте ALTER TABLE , а не CREATE TABLE .

Я использую его так:

  internal static int checkTable() { DataTable dTable = new DataTable(); try { dbConn = new SQLiteConnection("Data Source=" + dbFileName + ";Version=3;"); dbConn.Open(); sqlCmd.Connection = dbConn; String makeTable = "CREATE TABLE IF NOT EXISTS responde( id INTEGER PRIMARY KEY AUTOINCREMENT, sid TEXT, ans TEXT, answe TEXT, questid TEXT, timestamp TEXT)"; sqlCmd.CommandText = makeTable; sqlCmd.ExecuteNonQuery(); return 1; } catch (SQLiteException) { Console.WriteLine("Error DB 100"); return 0; } catch (IndexOutOfRangeException) { Console.WriteLine("Error DB 101"); return 0; } catch (TypeInitializationException) { Console.WriteLine("Error DB 102"); return 0; } }