Форум программистов, компьютерный форум CyberForum.ru

Отрицательное значение id в SQLite - Android

Восстановить пароль Регистрация
 
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
13.04.2014, 23:24     Отрицательное значение id в SQLite #1
Добавляю запись в БД
Java
1
2
3
4
5
6
7
8
ContentValues cv = new ContentValues();
db = openOrCreateDatabase("myDB.db", SQLiteDatabase.OPEN_READWRITE, null);
cv.put("name", textViewName.getText().toString());
cv.put("namenumb", name_numb);
long rowID = db.insert("mytable", null, cv);
showToast(String.valueOf(rowID));          // в этом месте Toast показывает -1
db.insert("mytable", null, cv);
dbHelper.close();
При повторном чтении из этой базы такую запись не находит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 23:24     Отрицательное значение id в SQLite
Посмотрите здесь:

Android SQLite запрос
Android SQLite и умножения
ListView + SQLite Android
Android SQLite в Service
Android и sqlite Android
Кириллица в SQLite Android
ID в SQLite генерятся не с 0 а с 1; Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 563
14.04.2014, 10:16     Отрицательное значение id в SQLite #2
Цитата Сообщение от Digetix Посмотреть сообщение
При повторном чтении из этой базы такую запись не находит.
Документация гласит, что метод insert возвращает -1 в случае ошибки. Не удивительно что не удаётся обнаружить запись которая не вставилась. Может что-то не так со значением ключевого поля ?
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
14.04.2014, 11:51  [ТС]     Отрицательное значение id в SQLite #3
Цитата Сообщение от angryrobot Посмотреть сообщение
Может что-то не так со значением ключевого поля ?
Вы имеете в виду ошибку при вставке ContentValues ?
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 563
14.04.2014, 13:07     Отрицательное значение id в SQLite #4
Цитата Сообщение от Digetix Посмотреть сообщение
Вы имеете в виду ошибку при вставке ContentValues ?
Да. При помощи какого sql запроса вы создали таблицу mytable ?
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
14.04.2014, 20:49  [ТС]     Отрицательное значение id в SQLite #5
Цитата Сообщение от angryrobot Посмотреть сообщение
Может что-то не так со значением ключевого поля ?
Проверил, всё верно.
Цитата Сообщение от angryrobot Посмотреть сообщение
При помощи какого sql запроса вы создали таблицу mytable ?
Java
1
2
3
4
db.execSQL("create table mytable ("
                  + "id integer primary key autoincrement," 
                  + "name text," 
                  + "namenumb text," + ");");
Я в главной активити создаю эту таблицу, а во второй активити добавляю эту запись
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 563
15.04.2014, 09:16     Отрицательное значение id в SQLite #6
Цитата Сообщение от Digetix Посмотреть сообщение
Я в главной активити создаю эту таблицу, а во второй активити добавляю эту запись
У вас не создавалась таблица из-за неправильного запроса. Наверняка в логах у вас было что-то типа:

04-15 09:10:00.694: E/AndroidRuntime(24510): Caused by: android.database.sqlite.SQLiteException: near ")": syntax error (code 1): , while compiling: create table mytable (id integer primary key autoincrement,name text,namenumb text,);
04-15 09:10:00.694: E/AndroidRuntime(24510): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)



Уберите лишнюю запятую после "namenumb text" и всё заработает.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
15.04.2014, 22:05  [ТС]     Отрицательное значение id в SQLite #7
Цитата Сообщение от angryrobot Посмотреть сообщение
У вас не создавалась таблица из-за неправильного запроса. Наверняка в логах у вас было что-то типа:
Создавалась. Я вам написал сокращенный код, вот полный
Java
1
2
3
4
5
6
7
8
9
db.execSQL("create table mytable ("
                  + "id integer primary key autoincrement," 
                  + "name text," 
                  + "namenumb text," 
                  + "tip text," 
                  + "adres text,"
                  + "obId text," 
                  + "latit text,"
                  + "long text" + ");");
Эта таблица создается, я сразу считываю с неё данные, а вот записать в неё со второй активити не выходит. Приложение не вылетает, но id идёт "-1"
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
16.04.2014, 10:16     Отрицательное значение id в SQLite #8
Digetix, такое ощущение, что что-то с контекстом.

Я бы посоветовал Вам сделать проксировать доступ к базе данных через Singleton.

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
public class MySuperDBHelper extends SQLiteOpenHelper {
    private static final String MY_DB = "myDB";
    private static MySuperDBHelper instance;
 
    public static MySuperDBHelper getInstance() {
        if (instance == null) {
            instance = new MySuperDBHelper();
        }
        return instance;
    }
 
    private MySuperDBHelper() {
        super(TheApplication.getInstance().getApplicationContext(), MY_DB, null, 1);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        //Create table here
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
    }
 
    public void saveData(Data data) {
        //TODO
    }
 
    public Data getData(){
        //TODO
    }
}
и вызов:

Java
1
MySuperDBHelper.getInstance().getData();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2014, 21:28     Отрицательное значение id в SQLite
Еще ссылки по теме:

Android Глюк SQLite?
Переменная не получает отрицательное значение Android
Как вытащить значение из таблицы бд sqlite Android
Android Работа с SQLite
Listener SQLite Android

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

Или воспользуйтесь поиском по форуму:
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
17.04.2014, 21:28  [ТС]     Отрицательное значение id в SQLite #9
Цитата Сообщение от YuraAAA Посмотреть сообщение
Digetix, такое ощущение, что что-то с контекстом.
Java
1
2
MainActivity myActivity = new MainActivity();
dbHelper = myActivity.new DBHelper(myActivity);
Yandex
Объявления
17.04.2014, 21:28     Отрицательное значение id в SQLite
Ответ Создать тему
Опции темы

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