使用过程中发现过一段时间,连接就会被mysqld自动断开,就在每次查询前多执行一个“select 1”,反正是开发时候用,浪费资源就浪费吧。
1 #include <QApplication>
2 #include "mainwindow.h"
3
4 int main(int argc, char *argv[])
5 {
6 QApplication a(argc, argv)
7 MainWindow w
8 w.show()
9
10 return a.exec()
11 }
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include <QtGui>
5 #include <QtSql>
6
7 class MainWindow : public QMainWindow
8 {
9 Q_OBJECT
10
11 public:
12 MainWindow(QWidget *parent = 0)
13 ~MainWindow()
14
15 private slots:
16 void databaseRefleshActionTriggered()
17
18 void tableRefleshActionTriggered()
19 void tableActionGroupTriggered(QAction *)
20
21 void removeTab(int i)
22 {
23 tabWidget->removeTab(i)
24 }
25
26 private:
27 QSqlQuery *query(const QString &sql)
28 {
29 if ((!db.isOpen() || !QSqlQuery("select 1", db).isActive()) &&!db.open())
30 QMessageBox::warning(this, "Error", db.lastError().text())
31
32 return new QSqlQuery(sql, db)
33 }
34
35 private:
36 QWidget *widget
37 QVBoxLayout *layout
38 QTabWidget *tabWidget
39 QMap<QString, QTableView *>commentViews
40
41 QMenu *databaseMenu
42 QAction *databaseRefleshAction
43 QActionGroup *databaseActionGroup
44
45 QMenu *tableMenu
46 QAction *tableRefleshAction
47 QActionGroup *tableActionGroup
48
49 QSqlDatabase db
50 }
51
52 #endif // MAINWINDOW_H
extra列中出现的信息一般不是太重要,但是还是有很多信息我们可以从这里面获取到:using index:出现这个说明mysql使用了覆盖索引,避免访问了表的数据行,效率不错!
using where:这说明服务器在存储引擎收到行后将进行过滤。有些where中的条件会有属于索引的列,当它读取使用索引的时候,就会被过滤,所以会出现有些where语句并没有在extra列中出现using where这么一个说明。
using temporary:这意味着mysql对查询结果进行排序的时候使用了一张临时表。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)