mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 02:50:46 -06:00
Simplify code
Merge two very similar functions into one while keeping the best parts of both.
This commit is contained in:
@@ -986,16 +986,18 @@ bool DBBrowserDB::executeMultiSQL(const QString& statement, bool dirty, bool log
|
||||
return true;
|
||||
}
|
||||
|
||||
QVariant DBBrowserDB::querySingleValueFromDb(const QString& statement, bool log)
|
||||
QByteArray DBBrowserDB::querySingleValueFromDb(const QString& sql, bool log)
|
||||
{
|
||||
waitForDbRelease();
|
||||
if(!_db)
|
||||
return QVariant();
|
||||
return QByteArray();
|
||||
|
||||
if(log)
|
||||
logSQL(statement, kLogMsg_App);
|
||||
logSQL(sql, kLogMsg_App);
|
||||
|
||||
QByteArray utf8Query = statement.toUtf8();
|
||||
QByteArray retval;
|
||||
|
||||
QByteArray utf8Query = sql.toUtf8();
|
||||
sqlite3_stmt* stmt;
|
||||
if(sqlite3_prepare_v2(_db, utf8Query, utf8Query.size(), &stmt, nullptr) == SQLITE_OK)
|
||||
{
|
||||
@@ -1005,16 +1007,22 @@ QVariant DBBrowserDB::querySingleValueFromDb(const QString& statement, bool log)
|
||||
{
|
||||
int bytes = sqlite3_column_bytes(stmt, 0);
|
||||
if(bytes)
|
||||
return QByteArray(static_cast<const char*>(sqlite3_column_blob(stmt, 0)), bytes);
|
||||
retval = QByteArray(static_cast<const char*>(sqlite3_column_blob(stmt, 0)), bytes);
|
||||
else
|
||||
return "";
|
||||
retval = "";
|
||||
}
|
||||
|
||||
sqlite3_finalize(stmt);
|
||||
} else {
|
||||
lastErrorMessage = tr("didn't receive any output from %1").arg(sql);
|
||||
qWarning() << lastErrorMessage;
|
||||
}
|
||||
} else {
|
||||
lastErrorMessage = tr("could not execute command: %1").arg(sqlite3_errmsg(_db));
|
||||
qWarning() << lastErrorMessage;
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
return retval;
|
||||
}
|
||||
|
||||
bool DBBrowserDB::getRow(const sqlb::ObjectIdentifier& table, const QString& rowid, QVector<QByteArray>& rowdata)
|
||||
@@ -1725,36 +1733,6 @@ void DBBrowserDB::updateSchema()
|
||||
emit structureUpdated();
|
||||
}
|
||||
|
||||
QString DBBrowserDB::selectSingleCell(const QString& sql, bool logsql)
|
||||
{
|
||||
waitForDbRelease();
|
||||
|
||||
if(!isOpen())
|
||||
return QString();
|
||||
|
||||
sqlite3_stmt* vm;
|
||||
const char* tail;
|
||||
QString retval;
|
||||
|
||||
// Get value from DB
|
||||
int err = sqlite3_prepare_v2(_db, sql.toUtf8(), sql.toUtf8().length(), &vm, &tail);
|
||||
if(err == SQLITE_OK){
|
||||
if (logsql)
|
||||
logSQL(sql, kLogMsg_App);
|
||||
if(sqlite3_step(vm) == SQLITE_ROW)
|
||||
retval = QString::fromUtf8((const char *) sqlite3_column_text(vm, 0));
|
||||
else
|
||||
qWarning() << tr("didn't receive any output from %1").arg(sql);
|
||||
|
||||
sqlite3_finalize(vm);
|
||||
} else {
|
||||
qWarning() << tr("could not execute command: %1, %2").arg(err).arg(sqlite3_errmsg(_db));
|
||||
}
|
||||
|
||||
// Return it
|
||||
return retval;
|
||||
}
|
||||
|
||||
QString DBBrowserDB::getPragma(const QString& pragma)
|
||||
{
|
||||
QString sql;
|
||||
@@ -1762,7 +1740,7 @@ QString DBBrowserDB::getPragma(const QString& pragma)
|
||||
sql = "SELECT 'x' NOT LIKE 'X'";
|
||||
else
|
||||
sql = QString("PRAGMA %1").arg(pragma);
|
||||
return selectSingleCell(sql);
|
||||
return querySingleValueFromDb(sql);
|
||||
}
|
||||
|
||||
bool DBBrowserDB::setPragma(const QString& pragma, const QString& value)
|
||||
|
||||
@@ -96,7 +96,7 @@ public:
|
||||
|
||||
bool executeSQL(QString statement, bool dirtyDB = true, bool logsql = true);
|
||||
bool executeMultiSQL(const QString& statement, bool dirty = true, bool log = false);
|
||||
QVariant querySingleValueFromDb(const QString& statement, bool log = true);
|
||||
QByteArray querySingleValueFromDb(const QString& sql, bool log = true);
|
||||
|
||||
const QString& lastError() const { return lastErrorMessage; }
|
||||
|
||||
@@ -176,7 +176,6 @@ public:
|
||||
/// log an SQL statement [thread-safe]
|
||||
void logSQL(QString statement, int msgtype);
|
||||
|
||||
QString selectSingleCell(const QString& sql, bool logsql = true);
|
||||
QString getPragma(const QString& pragma);
|
||||
bool setPragma(const QString& pragma, const QString& value);
|
||||
bool setPragma(const QString& pragma, const QString& value, QString& originalvalue);
|
||||
|
||||
@@ -314,7 +314,7 @@ QVariant SqliteTableModel::data(const QModelIndex &index, int role) const
|
||||
else
|
||||
sql = QString("SELECT '%1' %2").arg(value, eachCondFormat.sqlCondition());
|
||||
|
||||
if (m_db.selectSingleCell(sql, false) == "1")
|
||||
if (m_db.querySingleValueFromDb(sql, false) == "1")
|
||||
return eachCondFormat.color();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user