Android sqlite CREATE TABLE SI NO EXISTE

Tener un pequeño problema con la creación de nuevas tablas. Cuando uso el comando CREATE TABLE mis nuevas tablas se forman como deberían, pero cuando salgo de la actividad la aplicación se bloquea y obtengo una TABLE YA EXISTE en el logcat. Si utilizo CREATE TABLE SI NO EXISTE la nueva tabla no se forma, sino que simplemente añade mis nuevas filas de datos a una tabla anterior y no se bloquea. ¿Qué tiene de malo esto? Me gustaría añadir la tabla sin que me da la ya existe y me gustaría añadir sin añadir filas a una tabla diferente.

SqliteHelper Clase:

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); } } 

Así es como se supone que funciona. CREATE TABLE lanzará una excepción si la tabla ya existe. CREATE TABLE IF NOT EXISTS creará la tabla si no existe, o ignorará el comando si lo hace. Si desea eliminar la tabla antigua, utilice DELETE TABLE IF EXISTS antes de CREATE TABLE . Si desea cambiar el esquema, utilice ALTER TABLE , no CREATE TABLE .

Lo uso así:

  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; } } 
  • Android cursorwindow error de memoria en un fragmento específico
  • ¿Qué tipos de caché realiza SQLite en Android?
  • SQLiteDatabase: Insertar sólo si el valor no existe (no a través del comando raw SQL)
  • Pre-poblado Trie
  • SQLite Transformar columnas en cadena delimitada por comas
  • Consulta SQLite de Android donde columna no es nula y no vacía
  • Xml vs. sqlite para android y cómo
  • Java.lang.StackOverflowError
  • Cuente el número de tablas en la base de datos sqlite
  • Cómo agregar una columna booleana en Android SQlite
  • SQLiteDatabase.insertOrThrow no se lanza pero no se insertan datos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.