2013-05-23 2 views
0

Я слышал об использовании sqlite3_prepare_v2 вместо sqlite_exec, чтобы получить целые числа из базы данных, но мне не удалось найти примеры. This страница не помогла также. Теперь я получаю строки из базы данных, поэтому мне нужно проанализировать их с помощью atoi, и это кажется медленным и неэффективным. Там много подобных вопросов на SO, но они касаются OBJ-C и IOS SDK. Мне нужен подсказку или пример C/C++. Спасибо заранее.Получение значений int из SQLite

ответ

2

После того, как sqlite3_prepare преуспел, вы не должны забывать очистить инструкцию с помощью sqlite3_finalize. Чтобы получить результирующие записи, позвоните по телефону sqlite3_step, пока он не вернется SQLITE_ROW. Для получения значения текущей записи результата, вызовите sqlite3_column_* functions:

sqlite3_stmt *stmt; 
if (sqlite3_prepare_v2(db, "SELECT 42", -1, &stmt, NULL) != SQLITE_OK) 
    ...error... 
else { 
    for (;;) { 
     int rc = sqlite3_step(stmt); 
     if (rc == SQLITE_DONE) 
      break; 
     if (rc != SQLITE_ROW) { 
      ...error... 
      break; 
     } 
     printf("value: %d\n", sqlite3_column_int(stmt, 0)); 
    } 
    sqlite3_finalize(stmt); 
} 
0

sqlite3_column_int(result, columnNum); вернет один столбец из текущей строки вашего результата в виде int.

Ваша функция подготовки должна подготовить ваш запрос, это не имеет никакого отношения к интерпретации результатов. Все данные в sqlite3 хранятся в текстовом формате, вы используете соответствующую функцию для получения значения в том типе, который, по вашему мнению, должен быть.

+2

данных [* не * всегда хранится в виде текста] (http://www.sqlite.org/fileformat2.html#record_format). –

+0

@CL, ссылка, которую вы предоставляете, говорит о форматировании внутренней записи, а не о данных, просматриваемых пользователем. http://www.sqlite.org/datatypes.html предлагает, чтобы все было без каких-либо исключений, столбцы INTEGER PRIMARY KEY. – mah

+1

Данные, просмотренные пользователем, по-прежнему имеют тип; это то, что для [sqlite3_column_type()] (http://www.sqlite.org/c3ref/column_blob.html). –

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