分类: C/C++
2013-12-31 12:51:31
Q不自带Mysql的数据库驱动,如果需要在使用Mysql数据库进行开发,需要对Qt进行配置。
创建Qt控制台应用程序来检测Qt对数据库的支持
代码:
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
qDebug() << "MYSQL driver valid?" << db.isValid();
return a.exec();
}
运行结果:
配置Qt的Mysql的驱动
运行上面的程序
代码:
#include "mainwindow.h"
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk")); //set for chinese display
// QSqlQuery query; // Error here
QString createDB = "CREATE DATABASE IF NOT EXISTS classdb;";
QString createTable = "CREATE TABLE IF NOT EXISTS myclass(id int(4),name char(50),score double(10,2));";
QString insertData = "INSERT INTO myclass VALUES (1,'Tang',99.88),(2,'Hong',96.44),(3,'Duo',97.00); ";
QString selectData = "SELECT * from myclass ORDER BY score DESC;";
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //load mysql driver
db.setHostName("localhost");
db.setDatabaseName("information_schema");
db.setUserName("root");
db.setPassword("0000");
db.open(); // Connect to information_schema database system befoer you create a new database
QSqlQuery query(db);
if(!query.exec(createDB))
QMessageBox::critical(NULL,QObject::tr("Error"),query.lastError().text());
db.close();
db.setHostName("localhost");
db.setDatabaseName("classdb"); //rename database name
db.setUserName("root");
db.setPassword("0000");
if(!db.open()) // Open database
QMessageBox::critical(NULL,QObject::tr("Error"),db.lastError().text());
if(!query.exec(createTable)) // Create table in database
QMessageBox::critical(NULL,QObject::tr("Error"),query.lastError().text());
if(!query.exec(insertData)) // Insert data in database
QMessageBox::critical(NULL,QObject::tr("Error"),query.lastError().text());
if(!query.exec(selectData)) // search data in database
QMessageBox::critical(NULL,QObject::tr("Error"),query.lastError().text());
QSqlQueryModel *model=new QSqlQueryModel;
model->setQuery(query);
QTableView *table = new QTableView; // Display database data in TabelView
table->setModel(model);
table->show();
db.close();
QApplication::connect(&a, SIGNAL(lastWindowClose()), &a, SLOT(quit()));
return a.exec();
}
运行结果:
l 创建Qt Gui应用程序,在*.pro里面添加QT += sql
l 加载msyql数据库驱动程序
l 在数据库配置中,如果创建一个新数据库,一定得先连接Mysql自带的“information_schema”数据库,才能正确的创建数据库;如果连接一个已经存在的数据库,可以直接在连接已有的数据库
l 创建数据库
l 在数据库中创建表
l 在表中添加数据信息
l 查询数据库信息并显示到tableview上