add missing meta type handling for QMatrix, QTransform
[eql:eql.git] / examples / M-modules / sql / sqlite.lisp
1 (in-package :eql)
2
3 (setf *break-on-errors* t)
4
5 (qrequire :sql)
6
7 (defvar *db*         (qfun "QSqlDatabase" "addDatabase(QString)" "QSQLITE"))
8 (defvar *table-view* (qnew "QTableView" "windowTitle" "sqlite"))
9
10 (defun populate-db ()
11   (x:do-with (qfun *db* "exec")
12     "create table friends   ( id int primary key, name    varchar(50), country int )"
13     "create table countries ( id int primary key, country varchar(50) )")
14   (mapc (lambda (id name country)
15           (qfun *db* "exec" (format nil "insert into friends values (~A, '~A', ~A)" id name country)))
16         (list 1 2 3)
17         (list "Pascal" "Valentina" "Rachel")
18         (list 10 20 30))
19   (mapc (lambda (id name)
20           (qfun *db* "exec" (format nil "insert into countries values (~A, '~A')" id name)))
21         (list 10 20 30)
22         (list "France" "Italia" "USA")))
23
24 (defun ini ()
25   (qfun *db* "setDatabaseName" ":memory:")
26   (if (qfun *db* "open")
27       (progn
28         (populate-db)
29         (let ((model (qnew "QSqlRelationalTableModel")))
30           (qfun model "setTable" "friends")
31           (qfun model "setRelation" 2 (qnew "QSqlRelation(QString,QString,QString)" "countries" "id" "country"))
32           (qfun model "select")
33           (qfun *table-view* "setModel" model)
34           (qfun *table-view* "setItemDelegate" (qnew "QSqlRelationalDelegate"))
35           (qfun *table-view* "resizeColumnsToContents")
36           (qfun *table-view* "show")))
37       (qfun "QMessageBox" "critical" nil "EQL" (tr "Could not open database."))))
38
39 (ini)