diff --git a/src/PreferencesDialog.cpp b/src/PreferencesDialog.cpp
index 7285c662..3d919b3a 100644
--- a/src/PreferencesDialog.cpp
+++ b/src/PreferencesDialog.cpp
@@ -17,6 +17,8 @@ PreferencesDialog::PreferencesDialog(QWidget* parent)
{
ui->setupUi(this);
ui->treeSyntaxHighlighting->setColumnHidden(0, true);
+ ui->labelDatabaseDefaultSqlText->setVisible(false);
+ ui->editDatabaseDefaultSqlText->setVisible(false);
ui->fr_bin_bg->installEventFilter(this);
ui->fr_bin_fg->installEventFilter(this);
@@ -61,6 +63,7 @@ void PreferencesDialog::loadSettings()
ui->checkHideSchemaLinebreaks->setChecked(getSettingsValue("db", "hideschemalinebreaks").toBool());
ui->foreignKeysCheckBox->setChecked(getSettingsValue("db", "foreignkeys").toBool());
ui->spinPrefetchSize->setValue(getSettingsValue("db", "prefetchsize").toInt());
+ ui->editDatabaseDefaultSqlText->setText(getSettingsValue("db", "defaultsqltext").toString());
ui->comboDataBrowserFont->setCurrentIndex(ui->comboEditorFont->findText(getSettingsValue("databrowser", "font").toString()));
ui->spinDataBrowserFontSize->setValue(getSettingsValue("databrowser", "fontsize").toInt());
@@ -108,6 +111,7 @@ void PreferencesDialog::saveSettings()
setSettingsValue("db", "hideschemalinebreaks", ui->checkHideSchemaLinebreaks->isChecked());
setSettingsValue("db", "foreignkeys", ui->foreignKeysCheckBox->isChecked());
setSettingsValue("db", "prefetchsize", ui->spinPrefetchSize->value());
+ setSettingsValue("db", "defaultsqltext", ui->editDatabaseDefaultSqlText->text());
setSettingsValue("checkversion", "enabled", ui->checkUpdates->isChecked());
@@ -219,6 +223,10 @@ QVariant PreferencesDialog::getSettingsDefaultValue(const QString& group, const
if(group == "db" && name == "prefetchsize")
return 50000;
+ // db/defaultsqltext?
+ if(group == "db" && name == "defaultsqltext")
+ return "";
+
// MainWindow/geometry?
if(group == "MainWindow" && name == "geometry")
return "";
diff --git a/src/PreferencesDialog.ui b/src/PreferencesDialog.ui
index 5bc30a1b..efdda118 100644
--- a/src/PreferencesDialog.ui
+++ b/src/PreferencesDialog.ui
@@ -233,6 +233,46 @@
-
+
+
+ Advanced
+
+
+
+ :/icons/down:/icons/down
+
+
+ true
+
+
+
+ -
+
+
+
+ 20
+ 0
+
+
+
+
+ 16777215
+ 200
+
+
+
+
+ -
+
+
+ SQL to execute after opening database
+
+
+ editDatabaseDefaultSqlText
+
+
+
+ -
Qt::Horizontal
@@ -884,6 +924,14 @@
+
+
+ SqlTextEdit
+ QWidget
+
+ 1
+
+
tabWidget
comboDefaultLocation
@@ -927,8 +975,8 @@
saveSettings()
- 269
- 395
+ 275
+ 488
155
@@ -943,8 +991,8 @@
reject()
- 337
- 395
+ 343
+ 488
286
@@ -960,7 +1008,7 @@
571
- 103
+ 99
245
@@ -976,7 +1024,7 @@
571
- 141
+ 137
245
@@ -1016,6 +1064,38 @@
+
+ buttonDatabaseAdvanced
+ toggled(bool)
+ labelDatabaseDefaultSqlText
+ setVisible(bool)
+
+
+ 367
+ 189
+
+
+ 205
+ 220
+
+
+
+
+ buttonDatabaseAdvanced
+ toggled(bool)
+ editDatabaseDefaultSqlText
+ setVisible(bool)
+
+
+ 376
+ 191
+
+
+ 331
+ 219
+
+
+
saveSettings()
diff --git a/src/sqlitedb.cpp b/src/sqlitedb.cpp
index 8997e824..4bad4641 100644
--- a/src/sqlitedb.cpp
+++ b/src/sqlitedb.cpp
@@ -2,6 +2,7 @@
#include "sqlite.h"
#include "sqlitetablemodel.h"
#include "CipherDialog.h"
+#include "PreferencesDialog.h"
#include
#include
@@ -143,6 +144,14 @@ bool DBBrowserDB::open(const QString& db)
QFileInfo fid(fi.absoluteDir().absolutePath());
isReadOnly = !fi.isWritable() || !fid.isWritable();
+ // Execute default SQL
+ if(!isReadOnly)
+ {
+ QString default_sql = PreferencesDialog::getSettingsValue("db", "defaultsqltext").toString();
+ if(!default_sql.isEmpty())
+ executeMultiSQL(default_sql, false, true);
+ }
+
curDBFilename = db;
return true;
} else {
@@ -360,6 +369,11 @@ bool DBBrowserDB::create ( const QString & db)
executeSQL("DROP TABLE notempty;", false, false);
executeSQL("COMMIT;", false, false);
+ // Execute default SQL
+ QString default_sql = PreferencesDialog::getSettingsValue("db", "defaultsqltext").toString();
+ if(!default_sql.isEmpty())
+ executeMultiSQL(default_sql, false, true);
+
curDBFilename = db;
isEncrypted = false;
isReadOnly = false;