データベースの接続と作業を支援するために、SQLiteOpenHelperクラスを拡張しています。 documentationによれば、データベースが作成されていない場合にのみ、OnCreateメソッドを呼び出す必要があります。しかし、私の問題は、レコードを挿入するためにクエリを実行しようとすると、このエラーが発生するということです。AndroidのSQLite onCreate()の問題
ERROR/Database(214): Failure 1 (table Sample already exists) on 0x218688 when preparing
'CREATE TABLE Sample (RecId INT, SampleDesc TEXT);'.
このCreateクエリがコードで使用される唯一の場所は、このように見えるOnCreateメソッドです。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SAMPLE_TABLE_CREATE);
}
注:私は次のよtutorial - 私は別のやった唯一の事は、私は公共のSQLiteDatabaseをさせる、各エンティティのために、このクラスを拡張することができるように、代わりに民間のSQLiteDatabaseオブジェクトを公開です継承されたDataHelperクラスのオブジェクトはすべての作業を行います
ここでは、失敗した呼び出しを行うメソッドがあります。
//This method is in the class that extends DataHelper (See note on tutorial)
public void createSample(Sample sample)//next action form
{
String id = sample.getId();
String name = sample.getSummary();
String query = "INSERT INTO " + SAMPLE_TABLE_NAME + "(" + SAMPLE_Id + "," +
SAMPLE_NAME + ") " + " VALUES (" + id + "," + name + ")";
try{
data.rawQuery(query, null);
}
catch(SQLException e){
Log.i("Sample", "Errors: Sample LN60: " + e.getMessage());
}
}
誰かが私が間違ってやっているものを私に伝えることができますか?それともハック(表文を作成し実行する前に存在している場合つまりチェック)
作成しているので、最初のエラーは非常に単純である
は(私は、手動でDBがすでに作成されているかどうかを確認する必要はありませんコードのソースDBがまだ作成されていない場合に呼び出されます)。おそらくDB関連のコードをすべて投稿しますか? –