Доступ к массиву результатов из sqlite3_get_table - PullRequest
1 голос
/ 04 июля 2011

Я использую Ansi C и sqlite3_get_table; все работает, за исключением того, что я не могу получить доступ к вектору результатов запроса, переданному как указатель на массив. Вот мой код ...

char **sql_results;

sqlite3_get_table(open_database, sql_query,
        &sql_results, &RecordCount, &ColumnCount, &error_msg);

for (int i = 0; i <= (RecordCount + 1)* (ColumnCount); i++)
    printf("%10d %10s\n",i, sql_results[i]);  //get "EXC BAD ACCESS" message

Как мне исправить sql_results[i]? Спасибо.

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Я думаю, что этот кусок:

i <= (RecordCount + 1)* (ColumnCount)

вызывает у вас проблемы.Вы также пробовали

i < (RecordCount + 1)* (ColumnCount)
1 голос
/ 04 июля 2011

Вы должны проверить, что значение, возвращаемое sqlite3_get_table, равно SQLITE_OK;небезопасно получать доступ к таблице результатов, если это не так.

Вы также должны знать, что это устаревший API.И вы должны добавить вызов к sqlite3_free_table, чтобы освободить память;прямо сейчас у вас, похоже, есть утечка памяти (или вы уже это сделали, но отказались показать нам).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...