У меня есть расширение SQLiteOpenHelper. Код ниже.SQLiteOpenHelper onCreate вызывается каждый раз
package com.Parapaparam.association;
import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBHelper extends SQLiteOpenHelper {
private static final String TAG = "Associations";
private static Context myContext;
private static final String DB_NAME = "association.db";
private static final int DB_VERSION = 1;
private SQLiteDatabase db;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
myContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(TAG, "- onCreate DB -");
String text;
//InputStream is = this.getResources().openRawResource (R.raw.sql);
try {
InputStream inStream = myContext.getResources().openRawResource(R.raw.db);
int size = inStream.available();
// Read the entire asset into a local byte buffer.
byte[] buffer = new byte[size];
inStream.read(buffer);
inStream.close();
// Convert the buffer into a string.
text = new String(buffer);
} catch (IOException e) {
// Should never happen!
throw new RuntimeException(e);
}
String[] str = text.split(";");
for (String s : str) {
Log.d(TAG, s);
db.execSQL(s);
}
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
У меня есть класс, который вызывает мою БД.
public class DBInteraction {
private DBHelper dbHelper;
private SQLiteDatabase db;
public DBInteraction(Context context) {
dbHelper = new DBHelper(context);
}
private void openDB() {
db = dbHelper.getWritableDatabase();
}
}
Каждый раз при запуске приложения вызывается метод DBHelper onCreate. И у меня есть исключение:
Caused by: android.database.sqlite.SQLiteException: table associations
already exists: CREATE TABLE associations (_id INTEGER PRIMARY KEY, id_word
INTEGER, association TEXT)
Почему метод метода WithCreate вызывает каждый раз, когда БД уже создана?
Почему это происходит?
Возможно, это произошло из-за того, что вы, возможно, внесли некоторые изменения в свою предыдущую БД и попытались открыть ее снова, переопределив старый. Просто удалите приложение с устройства и повторите попытку. – GrIsHu
@laalto В res/raw/db У меня есть свалка sql моего db. – eugeneek
@Roc Да, и нет дубликатов 'create tables association 'там? – laalto