Я пытаюсь использовать sqlite3 в своем приложении C ++.Я сделал:
- sqlite3 my.db
- sqlite> СОЗДАТЬ ТАБЛИЦУ ссылок (UrlAsID VARCHAR (255) PRIMARY KEY, Владелец VARCHAR (255), ......,CreationTime INTEGER);
- sqlite> CREATE INDEX linkIDs ON links (UrlAsID, CreationTime ASC);
Затем я открыл соединение из кода C ++ с базой данных.
Изнутри кода у меня есть объект Url.Теперь мне нужно сделать следующее:
// check if url is in index (and in table as well)
string urlID = sqlite3_exec("SELECT UrlAsID FROM linkIDs WHERE UrlAsID = " + Url.id + ";");
if (urlID.empty()) {
sqlite3_exec("INSERT INTO links VALUES (" + Url.properties + ");");
sqlite3_exec("INSERT INTO linkIDs VALUES (" + Url.id + "," + int(Url.creationTime) + ");");
} else {
sqlite3_exec("UPDATE links SET (CreationTime = " + int(Url.creationTime) + "," + ... + ") WHERE UrlAsID = " + Url.id + ";");
sqlite3_exec("UPDATE linkIDs SET (CreationTime = " + int(Url.creationTime) + ") WHERE UrlAsID = " + Url.id + ";");
}
Я думал создать хранимую процедуру или использовать сложный оператор SQL для инкапсуляции вышеуказанной логики.Не могли бы вы предоставить мне более точный код для этого.
Заранее спасибо!