Почему в SQLITE появляется ошибка при правильном запросе? - PullRequest
0 голосов
/ 01 мая 2020

Вот мой код:

void DatabaseAccess::addPictureToAlbumByName(const std::string& albumName, const Picture& picture)
{
    std::string dbFileName = "GalleryDB.sqlite";
    int doesFileExist = _access(dbFileName.c_str(), 0);
    int res = sqlite3_open(dbFileName.c_str(), &db);

    if (res != SQLITE_OK)
    {
        db = nullptr;
        std::cout << "Failed to open DB" << std::endl;
    }
    else
    {
        std::string sqlStatement = "INSERT INTO PICTURES (ID,NAME,LOCATION,CREATION_DATE,ALBUM_ID) VALUES (" + std::to_string(picture.getId()) + ",'" + picture.getName() + "','" + picture.getPath() + "','" + picture.getCreationDate() + "',(SELECT ID FROM ALBUMS WHERE NAME = '" + albumName+ "'));";
        std::cout << sqlStatement;
        const char* sqlstate = sqlStatement.c_str();
        char** errMessage = nullptr;
        res = sqlite3_exec(db, sqlstate, nullptr, nullptr, errMessage);
        if (res != SQLITE_OK)
        {

            std::cout << "ERROR: CANNOT INSERT";
        }
    }
}

ИЗОБРАЖЕНИЕ и Альбом - это таблицы в моей базе данных: the tables

Запрос: INSERT INTO PICTURES (ID,NAME,LOCATION,CREATION_DATE,ALBUM_ID) VALUES (1,'albumy','somepath','somedate',(SELECT ID FROM ALBUMS WHERE NAME = 'x'));

И почему-то всегда возникает ошибка "если" (вторая), почему? что не так с моим запросом?

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