DROP TABLE не работает в sqlite
Я пытаюсь программно удалить таблицу nothing error show в logcat, но там нет никакого результата:
Вот мой вспомогательный класс базы данных:
public class database1 extends SQLiteOpenHelper
{
private static final String DB_Name="database";
private static final int DB_Version=1;
private static final String tbl_arrival1="arrival1";
private static final String STRING_CREATE1 = "CREATE TABLE IF NOT EXISTS "+tbl_arrival1
+" (_f_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+"f_date TEXT,"
+"o_rder NUMERIC,"
+"rem_com TEXT);";
public database1 (Context ctx)
{
super(ctx,DB_Name,null,DB_Version);
}
@Override
public void onCreate(SQLiteDatabase database) {
databaseQuery.onCreate(database);
}
public static class databaseQuery
{
public static void onCreate(SQLiteDatabase database)
{
database.execSQL("DROP TABLE IF EXISTS "+tbl_arrival1);
database.execSQL(STRING_CREATE1);
}
}
}
Я использую этот помощник базы данных в content provider:
database1 DBHelper ;
public Uri insert(Uri uri, ContentValues values)
{
long row_id;
SQLiteDatabase sqlDB = DBHelper.getWritableDatabase();
row_id=sqlDB.insert(tbl_arrival1, null, values);
if(row_id>0)
{
Uri _uri = ContentUris.withAppendedId(CONTENT_URI, row_id);
getContext().getContentResolver().notifyChange(_uri, null);
return _uri;
}
throw new SQLException("Failed to insert into "+uri);
}
Проблема в том, что таблица отбрасывания запросов не работает!
Все предложения и ответы будут высоко оценены...
Спасибо
3 ответа:
onCreate
будет работать только один раз во время создания После создания базы данных вы должны использоватьonUpgrade()
, чтобы удалить таблицу, если какие-либо изменения были внесены в старую версиюEDIT http://www.vogella.com/articles/AndroidSQLite/article.html
Ваш код, кажется, в порядке. Вы вызываете DROP TABLE и затем создаете снова впоследствии. Как вы проверили, что таблица DROP не работает?
Я знаю, что немного опоздал, но этот вопрос был важен для меня. В моем случае я попытался отбросить много таблиц в одном запросе, т. е.
drop table if exists table_name1; drop table if exists table_name2; drop table if exists table_name3;
Таким образом, реализация android
execSQL()
выполняет только одиночный оператор sql