Вот мой код:
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";
}
}
}
ИЗОБРАЖЕНИЕ и Альбом - это таблицы в моей базе данных:
Запрос: INSERT INTO PICTURES (ID,NAME,LOCATION,CREATION_DATE,ALBUM_ID) VALUES (1,'albumy','somepath','somedate',(SELECT ID FROM ALBUMS WHERE NAME = 'x'));
И почему-то всегда возникает ошибка "если" (вторая), почему? что не так с моим запросом?