Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие СУБД > Как в SQLite можно получить last_insert_id?


Автор: Lindemann66 11.8.2011, 10:25
Всем привет!

Думаю над вопросом, как можно получить last_insert_id, работая с SQLite

Будет ли работать 
Код

//процедура добавления ссылки
int DataBase::AddLink(LinkInfo link) {
    QString queryStr(("INSERT INTO links (page_id, address, type) "
                      "VALUES ('%1', '%2', '%3')").arg(link.page_id).arg(link.address).arg(link.type);
    QSqlQuery query(queryStr);

    if (!query.isActive()) {
        QMessageBox::warning(0, "Database Error",
                             query.lastError().text());
        return -1;
    }

    query("select last_insert_id()");
    if (!query.isActive()) {
        QMessageBox::warning(0, "Database Error",
                             query.lastError().text());
        return -1;
    }

    qint32 id = query.value(0).toInt();
    return id;
}


Либо надо делать выборку всего и применять last(), либо просто делать выборку с условием MAX()?

Автор: skyboy 12.8.2011, 00:28
 С++ интерфейс, как я понимаю?
тогда рекомендую посмотреть про http://sqlite.org/c3ref/last_insert_rowid.html 

Автор: Lindemann66 12.8.2011, 09:25
Цитата(skyboy @  12.8.2011,  00:28 Найти цитируемый пост)
С++ интерфейс, как я понимаю?

да
большое спасибо, я так и сделалsmile

Вот код, вдруг кому-то пригодится
Код

    query = QSqlQuery("select last_insert_rowid()");
    if (!query.isActive()) {
        QMessageBox::warning(0, "Database Error",
                             query.lastError().text());
        return -1;
    }
    query.next();
    int id = query.value(0).toInt();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)