6
void addBook(QSqlQuery &q, const QString &title, int year, const QVariant &authorId,
7
const QVariant &genreId, int rating)
11
q.addBindValue(authorId);
12
q.addBindValue(genreId);
13
q.addBindValue(rating);
17
QVariant addGenre(QSqlQuery &q, const QString &name)
21
return q.lastInsertId();
24
QVariant addAuthor(QSqlQuery &q, const QString &name, const QDate &birthdate)
27
q.addBindValue(birthdate);
29
return q.lastInsertId();
34
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
35
db.setDatabaseName(":memory:");
38
return db.lastError();
40
QStringList tables = db.tables();
41
if (tables.contains("books", Qt::CaseInsensitive)
42
&& tables.contains("authors", Qt::CaseInsensitive))
46
if (!q.exec(QLatin1String("create table books(id integer primary key, title varchar, author integer, genre integer, year integer, rating integer)")))
48
if (!q.exec(QLatin1String("create table authors(id integer primary key, name varchar, birthdate date)")))
50
if (!q.exec(QLatin1String("create table genres(id integer primary key, name varchar)")))
53
if (!q.prepare(QLatin1String("insert into authors(name, birthdate) values(?, ?)")))
55
QVariant asimovId = addAuthor(q, QLatin1String("Isaac Asimov"), QDate(1920, 2, 1));
56
QVariant greeneId = addAuthor(q, QLatin1String("Graham Greene"), QDate(1904, 10, 2));
57
QVariant pratchettId = addAuthor(q, QLatin1String("Terry Pratchett"), QDate(1948, 4, 28));
59
if (!q.prepare(QLatin1String("insert into genres(name) values(?)")))
61
QVariant sfiction = addGenre(q, QLatin1String("Science Fiction"));
62
QVariant fiction = addGenre(q, QLatin1String("Fiction"));
63
QVariant fantasy = addGenre(q, QLatin1String("Fantasy"));
65
if (!q.prepare(QLatin1String("insert into books(title, year, author, genre, rating) values(?, ?, ?, ?, ?)")))
67
addBook(q, QLatin1String("Foundation"), 1951, asimovId, sfiction, 3);
68
addBook(q, QLatin1String("Foundation and Empire"), 1952, asimovId, sfiction, 4);
69
addBook(q, QLatin1String("Second Foundation"), 1953, asimovId, sfiction, 3);
70
addBook(q, QLatin1String("Foundation's Edge"), 1982, asimovId, sfiction, 3);
71
addBook(q, QLatin1String("Foundation and Earth"), 1986, asimovId, sfiction, 4);
72
addBook(q, QLatin1String("Prelude to Foundation"), 1988, asimovId, sfiction, 3);
73
addBook(q, QLatin1String("Forward the Foundation"), 1993, asimovId, sfiction, 3);
74
addBook(q, QLatin1String("The Power and the Glory"), 1940, greeneId, fiction, 4);
75
addBook(q, QLatin1String("The Third Man"), 1950, greeneId, fiction, 5);
76
addBook(q, QLatin1String("Our Man in Havana"), 1958, greeneId, fiction, 4);
77
addBook(q, QLatin1String("Guards! Guards!"), 1989, pratchettId, fantasy, 3);
78
addBook(q, QLatin1String("Night Watch"), 2002, pratchettId, fantasy, 3);
79
addBook(q, QLatin1String("Going Postal"), 2004, pratchettId, fantasy, 3);