revisions

This commit is contained in:
pls.153 2025-03-24 18:37:52 +01:00
parent 7ae3cfb04a
commit 6528022b70
6 changed files with 12 additions and 15 deletions

View file

@ -1,5 +1,6 @@
#include "qt.h" #include "qt.h"
#include <QSqlQuery> #include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError> #include <QSqlError>
#include <QNetworkInterface> #include <QNetworkInterface>
#include <QHostAddress> #include <QHostAddress>
@ -171,7 +172,7 @@ QVariant QT::iniDb(const QVariant& vName) {
return vName; return vName;
} }
QVariant QT::sqlQuery(const QVariant& vQuery, const QVariant& vValues, const QVariant& vCols) { QVariant QT::sqlQuery(const QVariant& vQuery, const QVariant& vValues) {
QVariantList results; QVariantList results;
QSqlQuery sqlQuery(db); QSqlQuery sqlQuery(db);
if (db.open()) { if (db.open()) {
@ -182,7 +183,7 @@ QVariant QT::sqlQuery(const QVariant& vQuery, const QVariant& vValues, const QVa
sqlQuery.addBindValue(value); sqlQuery.addBindValue(value);
} }
if (sqlQuery.exec()) { if (sqlQuery.exec()) {
auto cols = vCols.toInt(); auto cols = sqlQuery.record().count();
while (sqlQuery.next()) { while (sqlQuery.next()) {
if (cols > 1) { if (cols > 1) {
QVariantList list; QVariantList list;

View file

@ -41,7 +41,7 @@ public:
// SQLite // SQLite
Q_INVOKABLE QVariant iniDb(const QVariant&); Q_INVOKABLE QVariant iniDb(const QVariant&);
Q_INVOKABLE QVariant sqlQuery(const QVariant&, const QVariant&, const QVariant&); Q_INVOKABLE QVariant sqlQuery(const QVariant&, const QVariant&);
// etc // etc
Q_INVOKABLE QVariant dataPath(const QVariant&); Q_INVOKABLE QVariant dataPath(const QVariant&);

View file

@ -3,9 +3,7 @@
(defvar *file* nil) (defvar *file* nil)
(defun query (query &rest values) (defun query (query &rest values)
(let ((cols (and (x:starts-with "select" query) (qrun* (qt:sql-query qt:*cpp* query values)))
(1+ (count #\, (subseq query 0 (search "from" query)))))))
(qrun* (qt:sql-query qt:*cpp* query values cols))))
(defun ini () (defun ini ()
(setf *file* (app:in-data-path "db")) (setf *file* (app:in-data-path "db"))

View file

@ -1,5 +1,6 @@
#include "qt.h" #include "qt.h"
#include <QSqlQuery> #include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError> #include <QSqlError>
#include <QQuickView> #include <QQuickView>
#include <QtDebug> #include <QtDebug>
@ -35,7 +36,7 @@ QVariant QT::iniDb(const QVariant& vName, const QVariant& vQuickView) {
return vName; return vName;
} }
QVariant QT::sqlQuery(const QVariant& vQuery, const QVariant& vValues, const QVariant& vCols) { QVariant QT::sqlQuery(const QVariant& vQuery, const QVariant& vValues) {
QVariantList results; QVariantList results;
QSqlQuery sqlQuery(db); QSqlQuery sqlQuery(db);
if (db.open()) { if (db.open()) {
@ -46,7 +47,7 @@ QVariant QT::sqlQuery(const QVariant& vQuery, const QVariant& vValues, const QVa
sqlQuery.addBindValue(value); sqlQuery.addBindValue(value);
} }
if (sqlQuery.exec()) { if (sqlQuery.exec()) {
auto cols = vCols.toInt(); auto cols = sqlQuery.record().count();
while (sqlQuery.next()) { while (sqlQuery.next()) {
if (cols > 1) { if (cols > 1) {
QVariantList list; QVariantList list;
@ -81,8 +82,7 @@ QVariant QT::sqlQuery(const QVariant& vQuery, const QVariant& vValues, const QVa
QPixmap DatabaseImageProvider::requestPixmap(const QString& name, QSize* size, const QSize& requestedSize) { QPixmap DatabaseImageProvider::requestPixmap(const QString& name, QSize* size, const QSize& requestedSize) {
auto result = qt->sqlQuery( auto result = qt->sqlQuery(
"select data from images where name = ?", "select data from images where name = ?",
QVariantList() << name, QVariantList() << name).value<QVariantList>();
1).value<QVariantList>(); // number of returned columns
QPixmap pixmap; QPixmap pixmap;
if (!result.isEmpty()) { if (!result.isEmpty()) {
pixmap.loadFromData(result.first().toByteArray()); pixmap.loadFromData(result.first().toByteArray());

View file

@ -18,7 +18,7 @@ class QT : public QObject {
public: public:
Q_INVOKABLE QVariant dataPath(const QVariant&); Q_INVOKABLE QVariant dataPath(const QVariant&);
Q_INVOKABLE QVariant iniDb(const QVariant&, const QVariant&); Q_INVOKABLE QVariant iniDb(const QVariant&, const QVariant&);
Q_INVOKABLE QVariant sqlQuery(const QVariant&, const QVariant&, const QVariant&); Q_INVOKABLE QVariant sqlQuery(const QVariant&, const QVariant&);
QT(); QT();
@ -30,7 +30,7 @@ class DatabaseImageProvider : public QQuickImageProvider {
public: public:
DatabaseImageProvider(QT* _qt) : QQuickImageProvider(QQuickImageProvider::Pixmap), qt(_qt) {} DatabaseImageProvider(QT* _qt) : QQuickImageProvider(QQuickImageProvider::Pixmap), qt(_qt) {}
QPixmap requestPixmap(const QString&, QSize*, const QSize&); QPixmap requestPixmap(const QString&, QSize*, const QSize&) override;
QT* qt; QT* qt;
}; };

View file

@ -3,9 +3,7 @@
(defvar *file* nil) (defvar *file* nil)
(defun query (query &rest values) (defun query (query &rest values)
(let ((rows (and (x:starts-with "select" query) (qrun* (qt:sql-query qt:*cpp* query values)))
(1+ (count #\, (subseq query 0 (search "from" query)))))))
(qrun* (qt:sql-query qt:*cpp* query values rows))))
(defun ini () (defun ini ()
(setf *file* (app:in-data-path "db")) (setf *file* (app:in-data-path "db"))