6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492

База SQLite: метод по созданию таблицы не вызывается

15.02.2016, 15:45. Показов 3628. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не пойму что не так.
Раньше с ним не работал
Пытался реализовать пример из сети, но что то не хочет, подозреваю что не создана сама база, а точнее что не вызывается метод по созданию.
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
public class NewDB extends Activity {
 
    final String LOG_TAG = "myLogs";
 
    DBHelper dbHelper;
 
    public void Insert(String text, String title) {
 
        dbHelper = new DBHelper(this);
 
        // создаем объект для данных
        ContentValues cv = new ContentValues();
 
        // подключаемся к БД
        SQLiteDatabase db = dbHelper.getWritableDatabase();
 
        Log.d(LOG_TAG, "--- Insert in mytable: ---");
        // подготовим данные для вставки в виде пар: наименование столбца - значение
 
        cv.put("name", text);
        cv.put("email", title);
        // вставляем запись и получаем ее ID
        long rowID = db.insert("mytable", null, cv);
        Log.d(LOG_TAG, "row inserted, ID = " + rowID);
 
        // закрываем подключение к БД
        dbHelper.close();
 
    }
 
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, 1);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.d(LOG_TAG, "--- onCreate database ---");
            // создаем таблицу с полями
            db.execSQL("create table mytable ("
                    + "id integer primary key autoincrement,"
                    + "name text,"
                    + "email text" + ");");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
        }
    }
 
}
ошибки
User-space exception detected!
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateData base(java.lang.String, int, android.database.sqlite.SQLiteDatabase$C ursorFactory, android.database.DatabaseErrorHandler)' on a null object reference

FATAL EXCEPTION: main
java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateData base(java.lang.String, int, android.database.sqlite.SQLiteDatabase$C ursorFactory, android.database.DatabaseErrorHandler)' on a null object reference

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateData base(java.lang.String, int, android.database.sqlite.SQLiteDatabase$C ursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2016, 15:45
Ответы с готовыми решениями:

Не работает проверка существования таблицы через метод ExecuteNonQuery() из System.Data.SQLite.dll
Использую приведенный ниже метод для определения существования таблицы в БД public int iExecuteNonQuery(string FileData, string sSql) ...

Почему эта функция вызывается по созданию элемента, а не по клику?
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>function Description(str)</title> <script...

Не могу понять почему не вызывается метод? Как вывести метод Plus?
namespace lesson3 { class Program { struct Complex { public double im; public double re;

30
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
15.02.2016, 17:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Паблито Посмотреть сообщение
и что мне дает этот текст ? INTEGER PRIMARY KEY AUTOINCREMENT
там даже не указано имя
Ну в коде не целиком строка, потому вырвал кусок с параметрами колонки ид. Имя у нее user_id.
0
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
15.02.2016, 17:31
Из реального кода скопировал - вполне работает.
Ты по русски понимаешь? SimpleCursorAdapter!
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
// открываем подключение к БД
        private DbConnections db;
        private SimpleCursorAdapter scAdapter;
        db = new DbConnections(this);
 
        String[] from = new String[]{AppData.DB_TBL_GLOSSARY_TITLE, AppData.DB_TBL_GLOSSARY_TEXT};
        int[] to = new int[]{R.id.listItemGlossaryTitle, R.id.listItemGlossaryText};
 
        scAdapter = new SimpleCursorAdapter(this, R.layout.list_item_glossary, null, from, to, 0);
        ListView listProduct = (ListView) findViewById(R.id.listViewGlossary);
 
        scAdapter.setViewBinder(new WineViewBinder());
        listProduct.setAdapter(scAdapter);
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
15.02.2016, 17:33
xaat, ооо вон оно как, понимаю, как-то не заметил. Ну тогда вопрос снят, этим адаптером не пользуюсь.
0
15.02.2016, 17:34

Не по теме:

алилуя :yahoo:

0
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
15.02.2016, 18:15
qdhtnsoyndtr,
Попробуй удалить приложение с устройства и установить заново.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
15.02.2016, 18:23
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
CoolMind, хотите не древний и не мохнатый?
http://www.fandroid.info/urok-... v-android/
Это тут причём? Я изначально писал, что способ этот древний, основанный на багах Андроида. В современных условиях можно не эксплуатировать эту Гугловскую оплошность, а сразу писать так, как хочется - хоть id, хоть code. По крайней мере, в нехилой БД, которая у нас была, всё прекрасно работало.
0
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
15.02.2016, 19:00
Я изначально писал, что способ этот древний, основанный на багах Андроида.
Это не оплошность, а соглашение такое между разработчиками, стандарт... при чем здесь баги?
В современных условиях можно не эксплуатировать эту Гугловскую оплошность, а сразу писать так, как хочется - хоть id, хоть code.
Не, нельзя, все что написано, или ришется, хоть это курсор адаптеры, различные хэлперы, различные ORMы все использует _id, ну так принято.
По крайней мере, в нехилой БД, которая у нас была, всё прекрасно работало.
Ну будет работать кто спорит? ...пока не понадобится ormlite приделать или адаптер чужой, тогда не будет работать. Как вы кстати, данные из базы данных отображаете в Активити без курсор адаптера, какой то свой велосипед изобрели? Из курсора складываем в List?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
16.02.2016, 09:48
Цитата Сообщение от xaat Посмотреть сообщение
Из курсора складываем в List?
Можно и так, можно просто курсор отправить в кастомный адаптер. Зачем нужны эти ограничения стандартного адаптера?
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
16.02.2016, 18:01
Цитата Сообщение от xaat Посмотреть сообщение
Это не оплошность, а соглашение такое между разработчиками, стандарт... при чем здесь баги?
Я не уверен, что это стандарт. Да, видел такое соглашение, но на нём не делается упора. Можно легко менять названия полей так, как удобно.
В одной из старых статей на "Хабре" видел, что без "_id" в старых версиях Андроида не работало. Вот потому и решил, что это баг.
Цитата Сообщение от xaat Посмотреть сообщение
Не, нельзя, все что написано, или ришется, хоть это курсор адаптеры, различные хэлперы, различные ORMы все использует _id, ну так принято.
У кого-то принято, но писать можно так, как захочешь. Не спорю, другие библиотеки могут использовать эти соглашения. Вы же в БД, допустим, Oracle не обязаны писать id в качестве поля? А уж в интерфейсе - так и подавно.
Цитата Сообщение от xaat Посмотреть сообщение
пока не понадобится ormlite приделать или адаптер чужой
Это мне неведомо, покамест не приходилось использовать чужой адаптер. Я обычно изучаю код, что там написано. Если есть такая необходимость, поменяю. Ну, пожалуй, это самый сильный аргумент за "_id".
Цитата Сообщение от xaat Посмотреть сообщение
Как вы кстати, данные из базы данных отображаете в Активити без курсор адаптера, какой то свой велосипед изобрели? Из курсора складываем в List?
Конечно, прописываю адаптер. Под каждый ListView свой.
Да, к ORM приглядываюсь, может быть, это заставит перейти на "_id".
0
16.02.2016, 18:57

Не по теме:

то есть слив защитан?

0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
17.02.2016, 13:39
Цитата Сообщение от Паблито Посмотреть сообщение
то есть слив защитан?
Кому? Если тебе, то да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2016, 13:39
Помогаю со студенческими работами здесь

Не вызывается метод
Здравствуйте! Изучаю язык C++, начал осваивать ООП. Для лучшего понимания решил написать программу, где массив задается через класс. Для...

Не вызывается метод
Метод public static Zapchasti add(Zapchasti zap) не работает, выдает ошибку. Подскажите пожалуйста что исправить надо. package...

Не вызывается метод
Добрый вечер, странно, но в данном куске метод buildNewsletter() не вызывается...проверял с помощью alert(); function CreateBook(doc)...

Почему не вызывается метод?
Есть класс с прорисовкой меню. Так же есть класс с прорисовкой JFrame. В классе с фреймом хочу вызвать метод меню: ...

Не вызывается метод функции
Добрый вечер. Есть функция и попытка ее вызвать. Пишет что a не определен. Почему так? <script> (function a() { ...


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

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

Новые блоги и статьи
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru