Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
#1

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

13.04.2014, 23:24. Просмотров 728. Ответов 8
Метки нет (Все метки)

Добавляю запись в БД
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();
При повторном чтении из этой базы такую запись не находит.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 23:24
Ответы с готовыми решениями:

Переменная не получает отрицательное значение
Всем привет! Если эта тема уже была то извиняюсь, просто даже не знаю как её...

Как вытащить значение из таблицы бд sqlite
Здравствуйте.Помогите пожалуйста разобраться. Суть такая.Есть две таблицы в...

Проверить отрицательное значение
Подскажите как проверить в запросе значение если оно отридцательное

Задачка на отрицательное значение
Мне нужно чтобы при отрицательном значении счета статус менял свое значение с...

Наибольшее отрицательное значение в массиве
Всем доброго времени суток. У меня тут возникла небольшая загвоздка, нужно в...

8
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
14.04.2014, 10:16 #2
Цитата Сообщение от Digetix Посмотреть сообщение
При повторном чтении из этой базы такую запись не находит.
Документация гласит, что метод insert возвращает -1 в случае ошибки. Не удивительно что не удаётся обнаружить запись которая не вставилась. Может что-то не так со значением ключевого поля ?
0
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
14.04.2014, 11:51  [ТС] #3
Цитата Сообщение от angryrobot Посмотреть сообщение
Может что-то не так со значением ключевого поля ?
Вы имеете в виду ошибку при вставке ContentValues ?
0
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
14.04.2014, 13:07 #4
Цитата Сообщение от Digetix Посмотреть сообщение
Вы имеете в виду ошибку при вставке ContentValues ?
Да. При помощи какого sql запроса вы создали таблицу mytable ?
0
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
14.04.2014, 20:49  [ТС] #5
Цитата Сообщение от angryrobot Посмотреть сообщение
Может что-то не так со значением ключевого поля ?
Проверил, всё верно.
Цитата Сообщение от angryrobot Посмотреть сообщение
При помощи какого sql запроса вы создали таблицу mytable ?
Java
1
2
3
4
db.execSQL("create table mytable ("
                  + "id integer primary key autoincrement," 
                  + "name text," 
                  + "namenumb text," + ");");
Я в главной активити создаю эту таблицу, а во второй активити добавляю эту запись
0
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
15.04.2014, 09:16 #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" и всё заработает.
0
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
15.04.2014, 22:05  [ТС] #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"
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
16.04.2014, 10:16 #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();
0
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
17.04.2014, 21:28  [ТС] #9
Цитата Сообщение от YuraAAA Посмотреть сообщение
Digetix, такое ощущение, что что-то с контекстом.
Java
1
2
MainActivity myActivity = new MainActivity();
dbHelper = myActivity.new DBHelper(myActivity);
0
17.04.2014, 21:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2014, 21:28

QByteArray::at возращает отрицательное значение
У меня есть массив байтов. Пишу простой код. QFile f(fileName); if...

BitmapData.Stride выдает отрицательное значение
пошарил в MSDN, пояснение нашел: Как перевернуть?

Присвоить числовой переменной отрицательное значение
Есть текстобокс, в который мы вводим числа. Положительные числа он без проблем...


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

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

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