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

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

Войти
Регистрация
Восстановить пароль
 
 
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
#1

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

15.02.2016, 15:45. Просмотров 805. Ответов 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.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, 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.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, 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.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2016, 15:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос База SQLite: метод по созданию таблицы не вызывается (Программирование Android):

База данных SQLite - Программирование Android
Добрый день. Может я повторюсь с вопросом, но вы уж меня простите, не могу найти... Подскажите, пожалуйста, где можно прочитать как создать...

База данных sqlite - Программирование Android
Доброго времени суток. Пишу приложение в котором возможна отправка запросов и на вставку и на чтение БД. Насколько я ...

AutoCompleteTextView + база sqlite - Программирование Android
Вопрос вот в чем, имеется база и элемент AutoCompleteTextView. Задача в том, чтобы в AutoCompleteTextView подгружался столбец с названиями...

Подскажите - не вызывается метод в потоке - Программирование Android
progress = ProgressDialog.show(getActivity(), "Please wait...", "Applying changes may take a few minutes.",...

SQLite база данных с паролем - Программирование Android
Есть база данных защищенная ключом! Сама база данных хранится на устройстве. При подключении к базе надо как то передать пароль, но в...

SQLite база данных (новичек) - Программирование Android
Здравствуйте уважаемые программисты. Подскажите пожалуйста как можно при создании таблицы в базе данных вытаскивать название с...

30
_Night_Scream_
76 / 75 / 8
Регистрация: 08.08.2013
Сообщений: 612
15.02.2016, 15:53 #2
qdhtnsoyndtr, принято _id
0
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
15.02.2016, 15:56  [ТС] #3
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
принято id_
Не понял, можно подробней?
0
_Night_Scream_
76 / 75 / 8
Регистрация: 08.08.2013
Сообщений: 612
15.02.2016, 16:02 #4
qdhtnsoyndtr, обшибся не id_ , а _id
это как некий стандарт, где то читал что и ошибки были при использовании id
http://vlad8.com/tech/android-sqlite-database/
вот пример, да и гугл много чего выдает.

Бегло пробежался по коду, ошибок не увидел, попробуйте очистить базу (приложение) или создать с другим именем.
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
15.02.2016, 16:02 #5
человек выше хотел сказать что в этой строке
Java
1
2
3
4
db.execSQL("create table mytable ("
                    + "id integer primary key autoincrement,"
                    + "name text,"
                    + "email text" + ");");
вместо просто id, принято писать "_id"
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
15.02.2016, 16:04 #6
А почему не писать tablename_id, tablename2_id? Удобнее же при добавлении, например, в таблицу людей ид их квартир.
0
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
15.02.2016, 16:16  [ТС] #7
_Night_Scream_, Поправил, но все равно те же ошибки.
Попробую с вашей ссылки реализовать.

Добавлено через 1 минуту
Цитата Сообщение от Spelcrawler Посмотреть сообщение
А почему не писать tablename_id, tablename2_id? Удобнее же при добавлении, например, в таблицу людей ид их квартир.
Это черновой вариант, проба сил. так что с названия ми не заморачивался.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
15.02.2016, 16:17 #8
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
Это черновой вариант, проба сил. так что с названия ми не заморачивался.
Это больше был вопрос к знающим людям. Может есть подводные камни при такой реализации.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
15.02.2016, 16:29 #9
Цитата Сообщение от Паблито Посмотреть сообщение
вместо просто id, принято писать "_id"
в мохнатые годы по древним мануалам.
0
_Night_Scream_
76 / 75 / 8
Регистрация: 08.08.2013
Сообщений: 612
15.02.2016, 16:37 #10
CoolMind, хотите не древний и не мохнатый?
http://www.fandroid.info/urok-34-rab...ite-v-android/
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
15.02.2016, 16:42 #11
_Night_Scream_, а если я на сайте handroid.info напишу, что нужно писать с восклицательным знаком и только в полнолуние, тоже будете так делать?
0
Pablito
15.02.2016, 16:48
  #12

Не по теме:

да пофиг вообще в какие годы и по каким мануалам, тут принципально чувак отписался, потому что пытается меня поддеть, он даже не дочитал что я расшифровывал фразу

Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
qdhtnsoyndtr, принято _id
кто как хочет так и называет на самом деле, плевать что в классе BaseColumns есть готовая константа
Java
1
2
3
4
5
    /**
     * The unique ID for a row.
     * <P>Type: INTEGER (long)</P>
     */
    public static final String _ID = "_id";

0
_Night_Scream_
76 / 75 / 8
Регистрация: 08.08.2013
Сообщений: 612
15.02.2016, 16:52 #13
Spelcrawler, а вы напишите, посмотрим.
Аргументируйте внятно и трезво.
Я говорю о том как принято, это не я придумал, причину я находил на хабре.
Сам я аргументировать и громко призывать не буду, я привел ссылки, каких гугл выдает с десяток.

Еще есть такой момент, fandroid как и startandroid заслуживают большого уважения, человек очень много часов вложил во благо общества бескорыстно.
А теперь... вы кто и что за handroid я без понятия, это главный ответ, пожалуй.

Вам лишь бы поспорить, аргументируйте и пишите не ерепенясь, тогда диалог будет весьма приятным и конструктивным.

----
Тоже хотел написать про BaseColumns из гугла.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
15.02.2016, 16:59 #14
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
А теперь... вы кто и что за handroid я без понятия
Ну вот и я про то же. Авторитета этот сайт не вызывает.
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
Вам лишь бы поспорить
Ну в споре рождается истина же) Да, я люблю поспорить, но не с целью кого-то унизить или доказать свою точку зрения, какой бы она ни была, а чтобы найти ту самую истину.
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
аргументируйте и пишите не ерепенясь
Ну это ведь вы говорите, что нужно так, а я спрашиваю аргументы)
0
Pablito
15.02.2016, 17:04     База SQLite: метод по созданию таблицы не вызывается
  #15

Не по теме:

ну там проблемы возникнут с CursorAdapter-ом, который типа уже устарел, но курсор лоадеры мало кто (судя по вопросам на форуме) осилил

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

Не создается база данных SQLite - Программирование Android
Здравствуйте уважаемы форумчане! Столкнулся с проблем, не создается база данных. При запросе данных с таблицы выскакивает ошибка и...

Android, ListView, база данных SQLite - Программирование Android
Как достать картинку из БД (SQLite) и поместить её в ListView??? помогите, пожалуйста :)

База SqLite - проверка записей на существование - Программирование Android
Помоги разрешить следующую ситуацию. у меня есть метод который получает данные из интернета в Json. Я данные разбираю и записываю в...

Метод вызывается только после второго нажатия на кнопку - Программирование Android
есть метод import com.github.nkzawa.emitter.Emitter; import com.github.nkzawa.socketio.client.Ack; import...


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

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

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