Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492

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

15.02.2016, 15:45. Показов 3526. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru