Вопрос Sqlite бд не возвращает значение

Начинающий
Статус
Оффлайн
Регистрация
10 Апр 2022
Сообщения
85
Реакции[?]
8
Поинты[?]
4K
при попытке достать из бд данные пишет Ошибка при выполнении запроса: no such table: data, хотя создается и добавляется все вроде правильно
Код:
    void createDatabase(const char* dbName) {
        sqlite3* db;
        int result = sqlite3_open(dbName, &db);
        if (result != SQLITE_OK) {
            std::cerr << "Ошибка при создании базы данных: " << sqlite3_errmsg(db) << std::endl;
            sqlite3_close(db);
            return;
        }
        std::string query = "CREATE TABLE IF NOT EXISTS data (key TEXT PRIMARY KEY, data TEXT)";
        result = sqlite3_exec(db, query.c_str(), nullptr, nullptr, nullptr);
        if (result != SQLITE_OK) {
            std::cerr << "Ошибка при создании таблицы: " << sqlite3_errmsg(db) << std::endl;
        }
        else {
            std::cout << "Таблица успешно создана." << std::endl;
        }
        sqlite3_close(db);
    }

    void addData(const char* dbName, const char* key, const char* data) {
        sqlite3* db;
        int result = sqlite3_open(dbName, &db);
        if (result != SQLITE_OK) {
            std::cerr << "Ошибка при открытии базы данных: " << sqlite3_errmsg(db) << std::endl;
            sqlite3_close(db);
            return;
        }
        std::string query = "INSERT INTO data (key, data) VALUES ('" + std::string(key) + "', '" + std::string(data) + "')";
        result = sqlite3_exec(db, query.c_str(), nullptr, nullptr, nullptr);
        if (result != SQLITE_OK) {
            std::cerr << "Ошибка при добавлении данных: " << sqlite3_errmsg(db) << std::endl;
        }
        else {
            std::cout << "Данные успешно добавлены." << std::endl;
        }
        sqlite3_close(db);
    }

    const char* getData(const char* dbName, const char* key) {
        sqlite3* db;
        int result = sqlite3_open(dbName, &db);
        if (result != SQLITE_OK) {
            std::cerr << "Ошибка при открытии базы данных: " << sqlite3_errmsg(db) << std::endl;
            sqlite3_close(db);
            return nullptr;
        }
        std::string query = "SELECT data FROM data WHERE key = '" + std::string(key) + "'";
        sqlite3_stmt* stmt;
        result = sqlite3_prepare_v2(db, query.c_str(), -1, &stmt, nullptr);
        if (result != SQLITE_OK) {
            std::cerr << "Ошибка при выполнении запроса: " << sqlite3_errmsg(db) << std::endl;
            sqlite3_finalize(stmt);
            sqlite3_close(db);
            return nullptr;
        }
        const char* data = nullptr;
        if (sqlite3_step(stmt) == SQLITE_ROW) {
            data = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0));
        }
        sqlite3_finalize(stmt);
        sqlite3_close(db);
        return data;
    }
 
В Токио растёт сакура, на бирже растёт акция
Эксперт
Статус
Оффлайн
Регистрация
2 Июн 2018
Сообщения
1,106
Реакции[?]
424
Поинты[?]
11K
SELECT data.key FROM data WHERE key?
 
Сверху Снизу