私はアンドロイドのアプリに取り組んでいる、と私はSQLにはIF NOT EXISTS
はありませんにもかかわらず、そのonCreate
文でエラーをスローしませんSQLiteOpenHelper
を拡張するクラスを持っている:テーブルを作成しても既存テーブルのエラーが発生しないのはなぜですか?
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE foo (columnName Text)");
}
私は、このクラスをインスタンス化することができます私が好きなだけ何度でも、値を追加したり、データを操作したり、閉じたりして、次にアプリケーションを開くときに戻ります。
MyClass MyClass0 = new MyClass(this);
SQLiteDatabase MyDatabase = MyClass0.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("columnName","value0");
long newRowId = MyDatabase.insert("foo", null, values);
Cursor cursor = MyDatabase.rawQuery("SELECT * FROM foo WHERE columnName = \"value0\"", null);
cursor.moveToPosition(0);
int rowcount = cursor.getCount();
Log.d("Database Testing",Integer.toString(rowcount));
MyDatabase.close();
私は彼らが口に贈り物の馬を見ないと言うが、私はなぜこれが機能するのか分からないことを知っている。
データベースが既に存在する場合は、 'onCreate()'が呼び出されないため、この[post](https://stackoverflow.com/a/21881993/5015207)を参照してください。 – 0X0nosugar