以前的时候写过两个学生管理的数据库系统。一个是文件版本的,一个数mysql数据版的,这两个都是黑窗口,一直想写一个图形界面的。最近学习Qt,抽空写了个简单的图形数据库系统。

其实啊,说是数据库系统,其实只是调用了Qt中sql的数据库接口。本质上和和以前写的版本并没有什么区别(当然,这里用Qt的Sql接口支持大多数Sql语句,而且并不限一个数据库,一个表),按照数据库的历史发展,都属于数据库阶段的数据存储。

本项目分为以下几个部分:
1、连接数据库
2、数据库语句执行
3、结果显示

几个部分都比较简单,下面简单介绍。

一、连接数据库

本项目所用到的数据库是运行在本地的mysql数据库。在运行前需要打开mysql服务器,并配置好相关设置属性(如权限设置和端口监听等)。在本项目中连接很简单,使用QSqlDatabase进行相关参数配置,如主机,用户名、密码等。然后调用open打开即可。
代码如下:

bool Widget::SqlConnection()
{
    db = QSqlDatabase::addDatabase("QMYSQL");       //sql驱动类型
    db.setHostName("192.168.153.128");      //主机地址
    db.setUserName("pan");                  //用户名
    db.setPassword("123456");               //密码
    if(!db.open())
    {
        qDebug()<<"连接数据库失败";
        return false;
    }
    else
    {
        qDebug()<<"成功连接数据库";
        return true;
    }

}

二、数据库语句执行

这一部分也很简单,主要过程是通过用户数据的sql语句,然后通过Mysql中提供的相关API将需要执行的sql语句传递给mysql服务器,然后返回相关结果。

主要代码如下所示:

void Widget::on_OKpushButton_clicked()
{
    QString query = ui->que_lineEdit->text();
    model->setQuery(query,db);      //Sql查询模型执行成功

    if(model->lastError().isValid())        //是否执行成功
    {
        QString error = model->lastError().text();
        ui->show_label->setText(error);
        qDebug()<<error;

    }
    else
    {
        ui->show_label->setText("Sql执行成功");
        qDebug()<<"Sql执行成功";
    }

    ui->que_lineEdit->setText("");
    ui->que_lineEdit->setFocus();
}

三、结果显示

这一部分也很简单,在第二部分中执行的sql语句执行之后,会将结果集带回来,然后会将执行成功或者失败的结果显示在下方。同时,若是查询类操作,会将返回的结果显示在TableView中。

代码如下:

model = new QSqlQueryModel(this);       //数据库查询模型
    ui->tableView->setModel(model);         //为TableView显示设定数据模型

这一部分主要是使用了Qt中的模型视图架构,将QSqlQueryModel绑定在tableview中,这样返回的结果就会同步显示在tableview中。

最终显示如下:

![初始界面

MySQL客户端工具 HS mysql数据库客户端工具_Qt


MySQL客户端工具 HS mysql数据库客户端工具_数据库_02

注:为了更人性化,后来的代码又做了一点小改动,与博客中的稍有不同,但整体思路没有发生太大的变化。