Я пытаюсь использовать C API SQLite для открытия базы данных и доступа к некоторым записям.Кажется, что база данных открывается нормально, но я не получаю никаких результатов при попытке запроса (возвращено 0 строк).Тот же запрос работает в интерфейсе командной строки sqlite3 и других приложениях / интерфейсах sqlite.Я использую [http://www.sqlite.org/cintro.html] в качестве ссылки.
Мой код - это всего лишь два вызова функций.Вывод программы:
«Открытая БД»
«количество строк = 0».
Я не делаю здесь ничего сложного, поэтому я надеюсь, что я простосовершая простую ошибку где-то, чего я не вижу.Буду признателен за любую помощь.
-kf
int main()
{
// declare some vars
sqlite3* db_handle;
char sql[2048]; // for commands,queries and such
char* err_msg;
char** results;
int rows, columns;
// connect to database file
if (!(sqlite3_open_v2("../../Downloads/maps/ontario.sql", &db_handle, SQLITE_OPEN_READONLY, NULL)))
{
std::cerr << "Could not connect to DB" << std::endl;
std::cerr << "Error: " << sqlite3_errmsg(db_handle);
sqlite3_close(db_handle);
return -1;
}
else
{ std::cerr << "Opened DB" << std::endl; }
// try sending query
strcpy(sql, "SELECT * FROM osm_node_tags LIMIT 10");
if(!(sqlite3_get_table(db_handle, sql, &results, &rows, &columns, &err_msg)))
{
std::cerr << "Error: " << sqlite3_errmsg(db_handle);
sqlite3_close(db_handle);
return -1;
}
else
{
std::cerr << "number of rows = " << rows;
for (int i=1; i <= rows; i++)
{ std::cerr << results[(i * columns) + 0] << std::endl; }
}
return 1;
}