Как проверить, существует ли таблица в API sqlite3 c ++? - PullRequest
9 голосов
/ 17 августа 2010

Я открываю файл базы данных и, возможно, создаю его, если он не существует.

Но по какой-то причине это не создает таблицу.Любые идеи?

const char* sql = "CREATE TABLE IF NOT EXISTS blocks(id text primary_key,length numeric)";

sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db_, create_table_sql, -1, &stmt, NULL);
rc = sqlite3_step(stmt);

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

Может быть, есть лучший способ сделать это?

Ответы [ 3 ]

11 голосов
/ 17 августа 2010

Вариация на другой ответ:

select count(type) from sqlite_master where type='table' and name='TABLE_NAME_TO_CHECK';

Вернет 0, если таблица не существует, 1, если она существует.

5 голосов
/ 17 августа 2010

Выполните следующий SQL:

select 1 from sqlite_master where type='table' and name='TABLE_NAME_TO_CHECK'

Если вы получили строку, то таблица существует.Если результирующий набор пуст, то это не так.

2 голосов
/ 17 августа 2010

Похоже, вам не хватает правильной скобки в SQL. Должно быть:

const char* sql = "CREATE TABLE IF NOT EXISTS blocks(id text primary_key,length numeric);";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...