Фон
Весь день я пытался решить проблему, я прочитал все статьи и документацию, которые мог найти в Интернете, но я не могу решить эту проблему. Я пишу приложение для iPhone, и мне нужно работать с базой данных sqlite ( sqlite3 ).
Основная проблема
Я создал свою базу данных, и все идет хорошо, пока я не хочу получить количество строк в моей таблице. Имя таблицы ARTICLES
, поэтому я написал
SELECT COUNT(*) FROM ARTICLES
Моя программа ничего не делает и записывает в журнал: Неизвестная ошибка.
const char *query = "SELECT COUNT (*) FROM ARTICLES";
sqlite3_stmt *compiledQuery;
sqlite3_prepare_v2(database, query, -1, &compiledQuery, NULL);
Программа выдает сообщение " Неизвестная ошибка " в приведенном выше коде, и я не могу получить количество строк.
Кто может помочь мне решить эту проблему ... или может быть что-то с sqlite не правильно?
код
- (int) GetArticlesCount
{
if (sqlite3_open([self.dataBasePath UTF8String], &articlesDB) == SQLITE_OK)
{
const char* sqlStatement = "SELECT COUNT(*) FROM ARTICLES";
sqlite3_stmt *statement;
if( sqlite3_prepare_v2(articlesDB, sqlStatement, -1, &statement, NULL) == SQLITE_OK )
{
if( sqlite3_step(statement) == SQLITE_DONE )
{
}
else
{
NSLog( @"Failed from sqlite3_step. Error is: %s", sqlite3_errmsg(articlesDB) );
}
}
else
{
NSLog( @"Failed from sqlite3_prepare_v2. Error is: %s", sqlite3_errmsg(articlesDB) );
}
// Finalize and close database.
sqlite3_finalize(statement);
sqlite3_close(articlesDB);
}
return 0;
}
В этой строке появляется неизвестная ошибка:
NSLog( @"Failed from sqlite3_step. Error is: %s", sqlite3_errmsg(articlesDB) );
Что я должен добавить в код или что я должен сделать, чтобы получить количество строк? Пожалуйста, помогите ...
Рабочий код (не действует)
const char* sqlStatement = "SELECT * FROM ARTICLES";
sqlite3_stmt *statement;
if( sqlite3_prepare_v2(articlesDB, sqlStatement, -1, &statement, NULL) == SQLITE_OK )
{
int count = 0;
while( sqlite3_step(statement) == SQLITE_ROW )
count++;
}
Я получил правильное количество строк! Но я не думаю, что это эффективный метод ... Я думаю, что с sqlite что-то идет не так ...