Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141321
  • 博文数量: 35
  • 博客积分: 245
  • 博客等级: 二等列兵
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-06 14:31
文章分类

全部博文(35)

文章存档

2017年(8)

2015年(1)

2014年(7)

2013年(11)

2012年(1)

2011年(7)

我的朋友

分类: C/C++

2013-12-31 12:51:31

QtMysql数据库配置和开发

 

 

开发环境


  •         Qt4.8.4
  •         Qt creator 2.8.1
  •          Mysql 5.0


 

 

配置Qt环境

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();

}

 

运行结果:

 


 

配置QtMysql的驱动


  •         将mysql库文件和DLL文件:qsqlmysql4.lib, qsqlmysql4.dll, qsqlmysql4d.lib, qsqlmysql4d.dll,拷贝到Qt安装路径下的plugins\slsdrivers\文件夹里面,下载sqldrivers.zip



  •         将Mysqlbin路径如:C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin设置到系统环境变量path里面


 

运行上面的程序

 

 

 

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

 

 

阅读(2556) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~