Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
1

Работа со SQLite. При обращение к таблице выдаёт сообщение о её отсутствии

21.03.2016, 22:31. Показов 516. Ответов 0

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!
Товарищи, пожалуйста подскажите где я не прав, уже начинаю чувствовать себя идиотом...
Создаю базу данных, заполняю её, затем получаю список того, что запомнил и приложение вылетает с ошибкой:

Java
1
android.database.sqlite.SQLiteException: no such table: Sections (code 1): , while compiling: SELECT COUNT(*) AS Counter FROM `Sections`
Создаётся и заполняется база данных так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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"); 
            } 
        }); 
    } 
}
Я очень надеюсь на любую подсказку!

Заранее всем большое спасибо!

Добавлено через 1 час 13 минут
В общем сам нашёл ответ...
Если кому интересно: Эта хренотень не поддерживает выполнение сразу нескольких запросов в одной команде. Разбил отдельно создание каждой таблицы и всё стало хорошо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2016, 22:31
Ответы с готовыми решениями:

Создать поле в таблице при его отсутствии
Есть переменная таблица с именами таблиц в БД DECLARE @TableNames TABLE (TABLE_NAME...

Продолжение цикла php при отсутствии совпадений в таблице БД
Прошу помощи. Как продолжить цикл, (то есть надо уйти в конец цикла и продолжить с новой...

Проверить наличие записи в таблице и добавить его при отсутствии
Дано две таблицы: Если в таблице 1 нет такого же id как в таблице 2, то необходимо этот id...

Сообщение при отсутствии данных
Здравствуйте! Подскажите пожалуйста 1. Как правильно прописать условие, если в таблице...

0
21.03.2016, 22:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2016, 22:31
Помогаю со студенческими работами здесь

Сообщение при отсутствии dll
Здравствуйте. Как сделать системное предупреждении при отсуствии dll подключенных через uses или...

Сообщение об ошибке при отсутствии файла
Подскажите можно ли сделать устронить ошибку ?...

Работа библиотеки Retrofit при отсутствии подключения к интернету
При стабильном подключении к интернету приложение работает нормально, как только убираю подключение...

Выдать сообщение об ошибке при отсутствии входных параметров
Добрый день. Нужно реализовать следующее: Выдать сообщение об ошибке при отсутствии...

При выполнении запроса, не выводится сообщение об отсутствии нужной строки.
Доброго времени суток! При отсутствии запрашиваемой строки, не могу получить сообщения об этом в...

Как вывести свое сообщение при отсутствии нужного файла?
Как правильно сделать проверку наличия файла и при его отсутствии вывести собственное сообщение и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru