Всем доброго времени суток!
Товарищи, пожалуйста подскажите где я не прав, уже начинаю чувствовать себя идиотом...
Создаю базу данных, заполняю её, затем получаю список того, что запомнил и приложение вылетает с ошибкой:
Код: Выделить всё
android.database.sqlite.SQLiteException: no such table: Sections (code 1): , while compiling: SELECT COUNT(*) AS Counter FROM `Sections`
Создаётся и заполняется база данных так:
Код: Выделить всё
public class DataBaseCore extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "TestDB";
public SQLiteDatabase DataBase;
public DataBaseCore(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
try {
DataBase = this.getWritableDatabase();
} catch (SQLiteException ex){
DataBase = this.getReadableDatabase();
}
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_DB = "CREATE TABLE `Desired` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , `goodid` INTEGER NOT NULL );" +
"CREATE TABLE `Goods` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , `VKGoodID` INTEGER NOT NULL , `CategoryID` INTEGER NOT NULL , `Title` VARCHAR(56) NOT NULL , `Description` TEXT, `Date` TimeStamp NOT NULL , `OwnerID` INTEGER NOT NULL , `Price` FLOAT NOT NULL DEFAULT 0, `Currency` VARCHAR(5) NOT NULL , `Thumb` TEXT);" +
"CREATE TABLE `Sections` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , `SectionVKID` INTEGER NOT NULL , `Name` VARCHAR(24) NOT NULL );" +
"CREATE TABLE `categories` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , `VKCatID` INTEGER NOT NULL , `SectionID` INTEGER NOT NULL , `Name` VARCHAR(24) NOT NULL );" +
"CREATE TABLE `sellers` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , `Name` VARCHAR(56) NOT NULL , `SellerVKID` INTEGER NOT NULL );";
db.execSQL(CREATE_DB);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS `Desired`;" +
"DROP TABLE IF EXISTS `Goods`;" +
"DROP TABLE IF EXISTS `Sections`;" +
"DROP TABLE IF EXISTS `categories`;" +
"DROP TABLE IF EXISTS `sellers`");
onCreate(db);
}
public void categoriesUpdate() {
//onUpgrade(DataBase, 1, 2);
VKRequest request = new VKRequest("market.getCategories", VKParameters.from("count", 200));
request.executeWithListener(new VKRequest.VKRequestListener() {
@Override
public void onComplete(VKResponse response) {
try{
//парсим список категорий
JSONObject jsonObject = new JSONObject(response.responseString);
JSONObject resp = jsonObject.getJSONObject("response");
Category[] CatList = new Category[resp.getInt("count")];
ArrayList<Category> Section = new ArrayList<Category>();
JSONArray parray = resp.getJSONArray("items");
int LastSectionID = -1;
//Очищаем список категорий и подкатегорий
DataBase.execSQL("DELETE FROM `categories`"); // вообще крашится уже на этой строке с аналогичной ошибкой, но если эти две строки закомментировать, на инсерты не ругается вообще
DataBase.execSQL("DELETE FROM `Sections`");
Cursor cur = DataBase.rawQuery("select * from sqlite_master where type = 'table'", null);
cur.moveToFirst();
while (cur.isAfterLast()){
Log.w("TABLE NAME", cur.getString(0));
cur.moveToNext();
}
cur.close();
for (int i = 0; i < parray.length(); i++) { //Заносим новые данные в таблицы
JSONObject tmp = parray.getJSONObject(i);
JSONObject tmp2 = tmp.getJSONObject("Section");
ContentValues newCatLine = new ContentValues();
newCatLine.put("VKCatID", tmp.getInt("id"));
newCatLine.put("SectionID", tmp2.getInt("id"));
newCatLine.put("Name", tmp.getString("name"));
DataBase.insert("categories", null, newCatLine);
if (LastSectionID!=tmp2.getInt("id")) {
ContentValues newValues = new ContentValues();
newValues.put("SectionVKID", tmp2.getInt("id"));
newValues.put("Name", tmp2.getString("name"));
DataBase.insert("Sections", null, newValues);
LastSectionID = tmp2.getInt("id");
}
}
//draw (ProductList);
} catch (JSONException e){
Log.e("ERROR_VK_JSON", e.toString());
}
}
@Override
public void onError(VKError error) {
Log.e("ERROR_VK", error.toString());
}
@Override
public void attemptFailed(VKRequest request, int attemptNumber, int totalAttempts) {
Log.e("ERROR_VK", "Request is Failed");
}
});
}
}
Я очень надеюсь на любую подсказку!
Заранее всем большое спасибо!