前言:在當今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>
四、總結
在鏈接數據庫時,鏈接的數據庫是已經存在的數據庫,否則,數據庫打開失敗。