2016-09-23 2 views
-1

Это тривиально в mysql благодаря mysql_num_rows, но такой эквивалент не присутствует в sqlite3. Следовательно, возникает вопрос, как узнать, является ли текущая строка последней строкой.SQLite3 - как узнать, является ли текущая строка последней строкой

Реорганизация, как и следующая, не помогает, как и предыдущее связывание после того, как sqlite3_step недействителен.

sqlite3_prepare_v2() 
int fetched = 0; 
int last = 0; 
while (sqlite3_step(statement) == SQLITE_ROW) { 
     // this is the previous row 
     if(fetched) { 
      process(data, last); 
     } 
     fetched = 1; 
     data = sqlite3_column_text(); 
} 
last = 1; 
if(fetched) 
    process(data, last); 

исполняющему запрос, дважды (один со счетом) является тривиальным решением, но это не то, что я ищу.

Любые идеи? заранее спасибо.

+0

Если вы не создали таблицу с использованием предложения WITHOUT ROWID, 'SELECT Max (ROWID) AS LastRow' должен предоставить вам последнюю созданную строку. 'AS LastRow' является необязательным. –

ответ

0

SQLite вычисляет следующую выходную строку только при необходимости. Так что вы не можете узнать, можете ли вы получить еще одну строку, не пытаясь перейти к этой строке.

Если вашему коду действительно нужно знать, является ли текущая строка последней, вам необходимо сделать копию всех данных в строке.

+0

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

Смежные вопросы