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

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

Войти
Регистрация
Восстановить пароль
 
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
#1

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

13.04.2014, 23:24. Просмотров 671. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отрицательное значение id в SQLite (Программирование Android):

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

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

Задачка на отрицательное значение - MS Access
Мне нужно чтобы при отрицательном значении счета статус менял свое значение с одного на другое . Пробовал такую формулу но не прокатило....

1C 8.x Проверить отрицательное значение - 1С
Подскажите как проверить в запросе значение если оно отридцательное

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

Наибольшее отрицательное значение в массиве - C++
Всем доброго времени суток. У меня тут возникла небольшая загвоздка, нужно в массиве найти первый максимальный элемент среди отрицательных...

8
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
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 / 53
Регистрация: 08.10.2013
Сообщений: 564
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 / 53
Регистрация: 08.10.2013
Сообщений: 564
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
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 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
Привет! Вот еще темы с ответами:

Вычитание в цикле и проверка на не отрицательное значение - Delphi
Имеется кусок ткани длиной М метров. От него последовательно отрезаются куски разной длины. Все данные по использованию ткани заносятся в...

Переменной программно присвоить отрицательное значение - MS Access
как переменной програмно присвоить отрицательное значение

Как сдвинуть прокрутку от id на отрицательное значение? - jQuery
Здравствуйте! На jQuery имеется плавная прокрутка страницы по нажатию на ссылку до id элемента. Мне необходимо изменить окончательную...

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


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

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

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