LINUX.ORG.RU

Получить rowid результата

 , , ,


0

1

Используя функции sqlite3_prepare_v2 + sqlite3_step можно получать раз за разом всё новые строки (row), и получать значения разных столбцов при помощи например sqlite3_column_int.

Что если я добавлю myrowid integer primary key autoincrement, то я смогу через sqlite3_column_int получать myrowid без проблем.

Но ведь у БД уже есть вшитый rowid скрытый. Как его получить? Не могу найти соответствующую функцию в API SQLite3, хотя уверен что такая информация для каждого row у БД точно есть, осталось ее выцепить оттуда. Не вижу sqlite3_get_row_id(sqlite3_stmt *...

★★★★★

Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Кэп тут проходил мимо

у БД уже есть вшитый rowid скрытый. Как его получить?

SELECT rowid FROM table

mos ★★☆☆☆
()

Что если я добавлю myrowid integer primary key autoincrement, то я смогу через sqlite3_column_int получать myrowid без проблем.

мой парсер сломался об эту фразу, посему не понятно имеет ли она критическое значение для вопроса ТС или нет.
я принял за true, что не имеет.

mos ★★☆☆☆
()

rowid вроде только в каких-то последних версиях можно использовать стало

anonymous
()
Ответ на: комментарий от anonymous

ага

только наоборот

The rowid (and «oid» and «_rowid_») is omitted in WITHOUT ROWID tables. WITHOUT ROWID tables are only available in SQLite version 3.8.2 (2013-12-06) and later.

mos ★★☆☆☆
()
Ответ на: Кэп тут проходил мимо от mos

SELECT rowid FROM table

Т.е. придется явно прописать все поля, которые хочу захавать? Нельзя так: select rowid, * from table?

rowid вроде только в каких-то последних версиях можно использовать стало

У меня как раз самая последняя. Надеялся получать доступ к этому полю через C-API а не через запрос - так можно?

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Нельзя так: select rowid, * from table?

я уже погуглил за тебя - в скуляйте вроде можно.
вот в Идеальном Лучшей Базе На Свете Без Бэ оракле - нельзя. ну точно так же нельзя. надо непременно квалифицировать *.

mos ★★☆☆☆
()
Последнее исправление: mos (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Т.е. придется явно прописать все поля, которые хочу захавать? Нельзя так: select rowid, * from table?

Можно. А так же если первичный ключ объявить как INTEGER PRIMARY KEY (именно так, а не INT PRIMARY KEY), то он и будет являться ROWID

CrazyAlex25 ★★★
()
Ответ на: комментарий от mos

Мне не только rowid надо, а чтоб сразу и rowid и данные. Выше ответили что можно «rowid, *». Может быть я плохой-чукча-читатель, прошу прощения, не увидел. В любом случае, благодарю за ответы, за помощь.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от CrazyAlex25

Да, спасибо. Я уже так сделал - явно объявил что у меня прямокей.

I-Love-Microsoft ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.