?? connectdlg.cpp
字號:
#include "connectdlg.h"#include "ui_connectdlg.h"#include <QSqlDatabase>#include <QtSql>ConnDlg::ConnDlg(QWidget *parent) : QDialog(parent){ ui.setupUi(this); QStringList drivers = QSqlDatabase::drivers(); ui.comboDriver->addItems(drivers); connect(ui.comboDriver,SIGNAL(currentIndexChanged( const QString & )),this,SLOT(driverChanged(const QString &))); ui.status_label->setText(tr("準(zhǔn)備連接數(shù)據(jù)庫!"));}ConnDlg::~ConnDlg(){}QString ConnDlg::driverName() const{ return ui.comboDriver->currentText();}QString ConnDlg::databaseName() const{ return ui.editDatabase->text();}QString ConnDlg::userName() const{ return ui.editUsername->text();}QString ConnDlg::password() const{ return ui.editPassword->text();}QString ConnDlg::hostName() const{ return ui.editHostname->text();}int ConnDlg::port() const{ return ui.portSpinBox->value();}void ConnDlg::on_okButton_clicked(){ if (ui.comboDriver->currentText().isEmpty()) { ui.status_label->setText(tr("請選擇一個(gè)數(shù)據(jù)庫驅(qū)動!")); ui.comboDriver->setFocus(); } else if(ui.comboDriver->currentText() =="QSQLITE"){ addSqliteConnection();//創(chuàng)建數(shù)據(jù)庫表,如以存在則無須執(zhí)行。// creatDB(); accept(); }else{ QSqlError err = addConnection(driverName(), databaseName(), hostName(), userName(), password(), port()); if (err.type() != QSqlError::NoError) ui.status_label->setText(err.text()); else ui.status_label->setText(tr("連接數(shù)據(jù)庫成功!"));//創(chuàng)建數(shù)據(jù)庫表,如以存在則無須執(zhí)行。// creatDB(); accept(); }}QSqlError ConnDlg::addConnection(const QString &driver, const QString &dbName, const QString &host,const QString &user, const QString &passwd, int port){ QSqlError err; QSqlDatabase db = QSqlDatabase::addDatabase(driver); db.setDatabaseName(dbName); db.setHostName(host); db.setPort(port); if (!db.open(user, passwd)) { err = db.lastError(); } return err;}void ConnDlg::driverChanged(const QString & text){ if(text =="QSQLITE") { ui.editDatabase->setEnabled(false); ui.editUsername->setEnabled(false); ui.editPassword->setEnabled(false); ui.editHostname->setEnabled(false); ui.portSpinBox->setEnabled(false); } else{ ui.editDatabase->setEnabled(true); ui.editUsername->setEnabled(true); ui.editPassword->setEnabled(true); ui.editHostname->setEnabled(true); ui.portSpinBox->setEnabled(true); }}void ConnDlg::addSqliteConnection(){ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("databasefile"); if (!db.open()) { ui.status_label->setText(db.lastError().text()); return; } ui.status_label->setText(tr("創(chuàng)建sqlite數(shù)據(jù)庫成功!"));}void ConnDlg::creatDB(){ QSqlQuery query; query.exec("create table factory (id int primary key, " "manufactory varchar(40), " "address varchar(40))"); query.exec(QObject::tr("insert into factory values(1, '一汽大眾', '長春')")); query.exec(QObject::tr("insert into factory values(2, '二汽神龍', '武漢')")); query.exec(QObject::tr("insert into factory values(3, '上海大眾', '上海')"));// query.exec("create table cars (carid int primary key, "// "name varchar(50), "// "factoryid int, "// "year int)"); query.exec("create table cars (carid int primary key, " "name varchar(50), " "factoryid int, " "year int, " "foreign key(factoryid) references factory)"); query.exec(QObject::tr("insert into cars values(1, '奧迪A6', 1, 2005)")); query.exec(QObject::tr("insert into cars values(2, '捷達(dá)', 1, 1993)")); query.exec(QObject::tr("insert into cars values(3, '寶來', 1, 2000)")); query.exec(QObject::tr("insert into cars values(4, '畢加索', 2, 1999)")); query.exec(QObject::tr("insert into cars values(5, '富康', 2, 2004)")); query.exec(QObject::tr("insert into cars values(6, '標(biāo)致307', 2, 2001)")); query.exec(QObject::tr("insert into cars values(7, '桑塔納', 3, 1995)")); query.exec(QObject::tr("insert into cars values(8, '帕薩特', 3, 2000)"));}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -