2023-12-18 05:21:39 +00:00
|
|
|
// Copyright (C) 2023 The Qt Company Ltd.
|
2022-05-13 13:12:05 +00:00
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
2016-01-04 16:13:08 +00:00
|
|
|
|
|
|
|
#include "sqlcontactmodel.h"
|
|
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
#include <QSqlError>
|
|
|
|
#include <QSqlQuery>
|
|
|
|
|
|
|
|
static void createTable()
|
|
|
|
{
|
|
|
|
if (QSqlDatabase::database().tables().contains(QStringLiteral("Contacts"))) {
|
|
|
|
// The table already exists; we don't need to do anything.
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
QSqlQuery query;
|
|
|
|
if (!query.exec(
|
|
|
|
"CREATE TABLE IF NOT EXISTS 'Contacts' ("
|
|
|
|
" 'name' TEXT NOT NULL,"
|
|
|
|
" PRIMARY KEY(name)"
|
|
|
|
")")) {
|
|
|
|
qFatal("Failed to query database: %s", qPrintable(query.lastError().text()));
|
|
|
|
}
|
|
|
|
|
|
|
|
query.exec("INSERT INTO Contacts VALUES('Albert Einstein')");
|
|
|
|
query.exec("INSERT INTO Contacts VALUES('Ernest Hemingway')");
|
|
|
|
query.exec("INSERT INTO Contacts VALUES('Hans Gude')");
|
|
|
|
}
|
|
|
|
|
|
|
|
SqlContactModel::SqlContactModel(QObject *parent) :
|
|
|
|
QSqlQueryModel(parent)
|
|
|
|
{
|
|
|
|
createTable();
|
|
|
|
|
|
|
|
QSqlQuery query;
|
|
|
|
if (!query.exec("SELECT * FROM Contacts"))
|
|
|
|
qFatal("Contacts SELECT query failed: %s", qPrintable(query.lastError().text()));
|
|
|
|
|
2023-02-14 08:27:49 +00:00
|
|
|
setQuery(std::move(query));
|
2016-01-04 16:13:08 +00:00
|
|
|
if (lastError().isValid())
|
|
|
|
qFatal("Cannot set query on SqlContactModel: %s", qPrintable(lastError().text()));
|
|
|
|
}
|