Qt鏈接mysql數據庫(一)

前言:在當今IT界大多數都會用到數據存儲,今天帶領大家進入Qt鏈接mysql的世界。

一、鏈接mysql數據庫

新建一個QT控制檯程序(使用到的頭文件包含以下幾個)

#include <QCoreApplication>
#include <qsql.h>
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QSqlError>
#include <QDebug>
詳細代碼如下:

bool OpenDataBase()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");//設置數據庫IP
    db.setDatabaseName("mynote");//數據庫名字
    db.setUserName("root");//<span style="font-family: Arial, Helvetica, sans-serif;">mysql數據庫</span><span style="font-family: Arial, Helvetica, sans-serif;">用戶名</span>
    db.setPassword("******");//mysql數據庫密碼

    bool ok = db.open();
    QSqlQuery q;

    if(!ok)
    {
        return false;
        qDebug() << "Open error:" << q.lastError() << endl;
        exit(1);
    }
    return true;
}

void CreateTable()
{
    QSqlQuery q;
    q.exec("create table if not exists LoginTable (UserName varchar(20) primary key, UserPwd varchar(16) not null)");
}

void ShowData()
{
    QSqlQuery q;
    q.exec("select * from logintable");

    while(q.next())
    {
        QString name = q.value(0).toString();
        QString pwd = q.value(1).toString();
        qDebug()<<QString("Username:%1 Pwd:%2").arg(name).arg(pwd);
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    qDebug()<<"available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug()<<driver;//顯示所有的數據庫驅動

    OpenDataBase();//打開數據庫
    CreateTable();//創建表
    ShowData();//將數據顯示到控制檯

    return a.exec();
}
二、運行結果

Qt控制檯輸出結果

available drivers:

"QSQLITE"

"QMYSQL3"

"QMYSQL"

"QODBC3"

"QODBC"

"Username:[email protected] Pwd:1456469"

"Username:[email protected] Pwd:1111"

"Username:[email protected] Pwd:1111"

三、進入mysql數據庫查詢結果是否一致

Mysql數據庫查詢過程及結果: 

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mynote             |

| mysql              |

| performance_schema |

| teacher            |

| test               |

+--------------------+

6 rows in set (0.00 sec)

 

mysql> use mynote;

Database changed

mysql> select * from logintable;

+----------------+---------+

| name           | pwd     |

+----------------+---------+

[email protected] | 1456469 |

[email protected]   | 1111    |

[email protected]   | 1111    |

+----------------+---------+

3 rows in set (0.00 sec)

 

mysql>


四、總結

  在鏈接數據庫時,鏈接的數據庫是已經存在的數據庫,否則,數據庫打開失敗。








發佈了32 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章