С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 638
#1

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

21.03.2016, 22:31. Просмотров 207. Ответов 0

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2016, 22:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа со SQLite. При обращение к таблице выдаёт сообщение о её отсутствии (Программирование Android):

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

Как найти id записи в SQlite таблице при клике на кнопку расположенную в Listview item? - Программирование Android
привет ! подскажите пожалуйста решение((( Кейс: у меня есть листвью , который выводит записи из локальной БД. На каждом айтеме...

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

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

Сообщение при отсутствии данных - MS Access
Здравствуйте! Подскажите пожалуйста 1. Как правильно прописать условие, если в таблице &quot;ТаблицаРКЭнгельРено&quot; (формируется запросом) не...

Сообщение об ошибке при отсутствии файла - C++ Builder
Подскажите можно ли сделать устронить ошибку ? http://www.cyberforum.ru/attachment.php?attachmentid=137965&amp;stc=1&amp;d=1332849632 Этого...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2016, 22:31
Привет! Вот еще темы с ответами:

Выдать сообщение об ошибке при отсутствии входных параметров - CMD/BAT
Добрый день. Нужно реализовать следующее: Выдать сообщение об ошибке при отсутствии входных/входного параметров(а). Пробовал это,...

БД склад, необходимо получать сообщение при отсутствии товара на складе - MS Access
БД склад , необходимо получать сообщение при отсутствии товара на складе (или в запросе сообщение должно выскакивать ) помогите как...

Сообщение об отсутствии MSVCP71.dll при запуске Acronis OS Selector - Windows 10
Здравствуйте, уважаемые форумчане! Пытаюсь установить программу Acronis OS Selector к себе на компьютер, но почему-то возникает следующая...

При выполнении запроса, не выводится сообщение об отсутствии нужной строки. - C++ Builder БД
Доброго времени суток! При отсутствии запрашиваемой строки, не могу получить сообщения об этом в следующем коде: (поиск происходит без...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.