42 QSqlQuery query { db };
47 QString
LoadQuery (
const QString& pluginName,
const QString& filename)
49 QFile file {
":/" + pluginName +
"/resources/sql/" + filename +
".sql" };
50 if (!file.open (QIODevice::ReadOnly))
52 qWarning () << Q_FUNC_INFO
54 << file.errorString ();
55 throw std::runtime_error {
"Cannot open query file" };
58 return QString::fromUtf8 (file.readAll ());
61 void RunQuery (
const QSqlDatabase& db,
const QString& pluginName,
const QString& filename)
63 QSqlQuery query { db };
64 query.prepare (
LoadQuery (pluginName, filename));
70 template<
typename To,
typename From>
71 typename std::enable_if<std::is_same<From, To>::value, To>::type DumbCast (From from)
76 template<
typename To,
typename From>
77 typename std::enable_if<!std::is_same<From, To>::value &&
78 std::is_integral<From>::value &&
79 std::is_integral<To>::value, To>::type DumbCast (From from)
81 return static_cast<To
> (from);
84 template<
typename To,
typename From>
85 typename std::enable_if<!std::is_same<From, To>::value &&
86 !(std::is_integral<From>::value &&
87 std::is_integral<To>::value), To>::type DumbCast (From from)
89 return reinterpret_cast<To
> (from);
92 uintptr_t Handle2Num (Qt::HANDLE handle)
94 return DumbCast<uintptr_t> (handle);
100 return (base +
".%1_%2")
102 .arg (Handle2Num (QThread::currentThreadId ()));
QString GenConnectionName(const QString &base)
Generates an unique thread-safe connection name.
void RunQuery(const QSqlDatabase &db, const QString &pluginName, const QString &filename)
Loads the query from the given resource file and runs it.
QString LoadQuery(const QString &pluginName, const QString &filename)
Loads the query text from the given resource file.
void RunTextQuery(const QSqlDatabase &db, const QString &text)
Runs the given query text on the given db.
static UTIL_DB_API void Execute(QSqlQuery &query)
Tries to execute the given query.