Как вывести данные из SQLite3 в const char *?

Автор blattodea, 24 марта 2024, 01:38:52

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

blattodea

Всё удаётся, но нужно сохранить вывод из таблицы SQLite3 в строку типа — const char *. Вот такой код:

const char *report_1 (void)
{

sqlite3 *db;

char *err_msg = 0;

char sql[100];

int rc = sqlite3_open("plants.db", &db);

if (rc != SQLITE_OK)
{

fprintf(stderr, "Cannot open database: %s\n",
sqlite3_errmsg(db));
sqlite3_close(db);

return 1;
}

sprintf(sql, "SELECT id, number, familia, taxon FROM numbers");

rc = sqlite3_exec(db, sql, 0, 0, &err_msg);

if (rc != SQLITE_OK )
{

fprintf(stderr, "Failed to select data\n");
fprintf(stderr, "SQL error: %s\n", err_msg);

sqlite3_free(err_msg);
sqlite3_close(db);

return 1;
}

sqlite3_close(db);

return 0;
   
}

Вывод потом нужно вставить в:

HPDF_Page_ShowText (page, report_1());
Если так:

const char *report_1 (void)
{

char *data = "Это список из таблицы.";
   
return data;
   
}

то, естественно, всё работает, но надо из таблицы БД.


blattodea

Цитата: Graf от 25 марта 2024, 09:16:04https://metanit.com/c/database/1.2.php

Graf, ну я же ботаник, я так не соображу :biggrin_mini: Подскажи пожалуйста, как в моём случае вывести массив, пригодный для подсовывания в качестве аргумента этой штуковине для генерации пдф :sorry_mini:

blattodea

Хотел добавить русский язык, но это надо тянуть дополнительную библиотеку, хочется поменьше зависимостей. Ну, в общем, отказался я от этой затеи. Я просто заменил весь вывод на латынь. Вполне себе компромисс :biggrin_mini: Теперь моя буратина умеет общаться с пользователем только на латыни. Кроме того, английский я плохо умею, а латынь учил в университете и в связи с работой, использую повседневно практически.



Graf


blattodea

Как вот вывести в массив то? :(

int list_cb_1(void *NotUsed, int argc, char **argv, char **azColName)
{

    NotUsed = 0;

    for (int i = 0; i < argc; i++)
    {

        printf("%s\t ", argv[i]); // для вывода текстом

                const char *argv[i] = { "%s\t ", NULL }; // для PDF

    }

    printf("\n");

    return 0;
}

Так не работает :(

blattodea