40 QSqlQuery
RunTextQuery (
const QSqlDatabase& db,
const QString& text)
42 QSqlQuery query { db };
43 if (!query.exec (text))
45 qDebug () <<
"unable to execute query";
47 throw std::runtime_error {
"unable to execute query" };
52 QString
LoadQuery (
const QString& pluginName,
const QString& filename)
54 QFile file {
":/" + pluginName +
"/resources/sql/" + filename +
".sql" };
55 if (!file.open (QIODevice::ReadOnly))
57 qWarning () << Q_FUNC_INFO
59 << file.errorString ();
60 throw std::runtime_error {
"Cannot open query file" };
63 return QString::fromUtf8 (file.readAll ());
66 void RunQuery (
const QSqlDatabase& db,
const QString& pluginName,
const QString& filename)
68 QSqlQuery query { db };
69 query.prepare (
LoadQuery (pluginName, filename));
75 template<
typename To,
typename From>
76 std::enable_if_t<std::is_same<From, To> {}, To> DumbCast (From from)
81 template<
typename To,
typename From>
82 std::enable_if_t<!std::is_same<From, To> {} &&
83 std::is_integral<From> {} &&
84 std::is_integral<To> {}, To> DumbCast (From from)
86 return static_cast<To
> (from);
89 template<
typename To,
typename From>
90 std::enable_if_t<!std::is_same<From, To> {} &&
91 !(std::is_integral<From> {} &&
92 std::is_integral<To> {}), To> DumbCast (From from)
94 return reinterpret_cast<To
> (from);
97 uintptr_t Handle2Num (Qt::HANDLE handle)
99 return DumbCast<uintptr_t> (handle);
105 return (base +
".%1_%2")
107 .arg (Handle2Num (QThread::currentThreadId ()));
static UTIL_DB_API void DumpError(const QSqlError &error)
Dumps the error to the qWarning() stream.
void RunQuery(const QSqlDatabase &db, const QString &pluginName, const QString &filename)
Loads the query from the given resource file and runs it.
static UTIL_DB_API void Execute(QSqlQuery &query)
Tries to execute the given query.
QString LoadQuery(const QString &pluginName, const QString &filename)
Loads the query text from the given resource file.
QSqlQuery RunTextQuery(const QSqlDatabase &db, const QString &text)
Runs the given query text on the given db.
QString GenConnectionName(const QString &base)
Generates an unique thread-safe connection name.