mysql表结构检验_mysql表结构查看

1 #include "mainwindow.h"

2

3 MainWindow::MainWindow(QWidget *parent)4 : QMainWindow(parent), db(QSqlDatabase::addDatabase("QMYSQL"))5 {6 db.setHostName("localhost");7 db.setUserName("root");8 db.setPassword("");9

10 setWindowTitle("Table Comment Viewer");11 resize(600, 400);12

13 databaseMenu = menuBar()->addMenu("Database");14 databaseRefleshAction = databaseMenu->addAction("Reflesh");15 databaseMenu->addSeparator();16 databaseActionGroup = new QActionGroup(this);17 databaseActionGroup->setExclusive(true);18

19 connect(databaseRefleshAction, SIGNAL(triggered()), this, SLOT(databaseRefleshActionTriggered()));20 connect(databaseActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(tableRefleshActionTriggered()));21

22 tableMenu = menuBar()->addMenu("Table");23 tableRefleshAction = tableMenu->addAction("Reflesh");24 tableMenu->addSeparator();25 tableActionGroup = new QActionGroup(this);26

27 connect(tableRefleshAction, SIGNAL(triggered()), this, SLOT(tableRefleshActionTriggered()));28 connect(tableActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(tableActionGroupTriggered(QAction *)));29

30 widget = newQWidget;31 setCentralWidget(widget);32

33 layout = newQVBoxLayout;34 widget->setLayout(layout);35

36 tabWidget = newQTabWidget;37 tabWidget->setMovable(true);38 tabWidget->setTabsClosable(true);39 layout->addWidget(tabWidget);40

41 connect(tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(removeTab(int)));42

43 databaseRefleshActionTriggered();44 }45

46 MainWindow::~MainWindow()47 {48 }49

50 voidMainWindow::databaseRefleshActionTriggered()51 {52 QList acs = databaseActionGroup->actions();53 foreach (QAction *ac, acs)54 {55 databaseMenu->removeAction(ac);56 databaseActionGroup->removeAction(ac);57 delete ac;58 }59 acs.clear();60

61 QStringList ss;62 QSqlQuery *q = query("show databases;");63

64 while (q->next())65 ss << q->value(0).toString();66

67 foreach (const QString &s, ss)68 {69 databaseActionGroup->addAction(s)->setCheckable(true);70 }71

72 databaseMenu->addActions(databaseActionGroup->actions());73 tableRefleshActionTriggered();74 }75

76 voidMainWindow::tableRefleshActionTriggered()77 {78 int c = tabWidget->count();79 for (int i = 0; i < c; i++)80 {81 tabWidget->removeTab(i);82 }83

84 foreach (QTableView *v, commentViews.values())85 {86 delete v;87 }88

89 commentViews.clear();90

91 QList acs = tableActionGroup->actions();92 foreach (QAction *ac, acs)93 {94 tableMenu->removeAction(ac);95 tableActionGroup->removeAction(ac);96 delete ac;97 }98 acs.clear();99

100 QAction *ac = databaseActionGroup->checkedAction();101 if (!ac)102 return;103

104 QStringList ss;105 QSqlQuery *q = query(QString("show tables from %1").arg(ac->text()));106

107 while (q->next())108 ss << q->value(0).toString();109

110 foreach (const QString &s, ss)111 {112 tableActionGroup->addAction(s)->setWhatsThis("hahaha");113 }114

115 tableMenu->addActions(tableActionGroup->actions());116 }117

118 void MainWindow::tableActionGroupTriggered(QAction *ac)119 {120 QAction *dac = databaseActionGroup->checkedAction();121 if (!dac)122 return;123

124 QString table = ac->text();125

126 int c = tabWidget->count();127 for (int i = 0; i < c; i++)128 {129 if (tabWidget->tabText(i) ==table)130 {131 tabWidget->setCurrentIndex(i);132 return;133 }134 }135

136 if (!commentViews.contains(table))137 {138 QString sql = QString("select column_name, concat(column_type, ' ', ifnull(column_default, '')),"

139 "concat(ifnull(character_set_name, ''), ' ', ifnull(collation_name, ''), ' ', column_key, ' ', extra), column_comment"

140 "from information_schema.columns"

141 "where table_schema = '%1' and table_name = '%2'"

142 "order by ordinal_position;").arg(dac->text()).arg(table);143

144 QSqlQueryModel *model = newQSqlQueryModel;145

146 QSqlQuery *q =query(sql);147 model->setQuery(*q);148

149 model->setHeaderData(0, Qt::Horizontal, "Name");150 model->setHeaderData(1, Qt::Horizontal, "Type & Default");151 model->setHeaderData(2, Qt::Horizontal, "Extra");152 model->setHeaderData(3, Qt::Horizontal, "Comment");153

154 QTableView *view = newQTableView;155 view->setModel(model);156 view->show();157

158 commentViews[table] =view;159 }160

161 int i = tabWidget->addTab(commentViews[table], table);162 tabWidget->setCurrentIndex(i);163 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值