linux系統mysql索引
阿新 • • 發佈:2020-07-17
1 簡介
參考視訊:https://www.bilibili.com/video/BV1XW411x7NU?p=88
說明:本文對在Qt中操作SQLite做簡要說明。
SQLite:SQLite 是一個軟體庫,實現了自給自足的、無伺服器的、零配置的、事務性的 SQL 資料庫引擎。具體的操作命令可參考:https://www.runoob.com/sqlite/sqlite-tutorial.html
在Qt中操作SQLite不需要我們單獨先安裝它,可以直接使用。
2 測試及說明
語法就不介紹了,這裡說明功能:建立一個info.db資料庫,插入一些資料,然後遍歷輸出。
程式碼步驟說明:
(1)新增sqlite資料庫
1 db = QSqlDatabase::addDatabase("QSQLITE");
(2)建立資料庫
語法和之前操作MySql一樣:
1 QSqlQuery query; 2 query.exec("create table student(id int primary key, name varchar(255), age int, score int);");
(3)批量插入條目
1 //批量插入:odbc風格 2 //預處理語句 3 query.prepare("insert into student(name, age, score) values(?, ?, ?);"); 4 // 給欄位設定內容 5 QVariantList nameList; 6 nameList << "xiaoming" << "xiaokong" << "xiaojiang"; 7 QVariantList ageList; 8 ageList << 22 << 21 << 24; 9 QVariantList scoreList; 10 scoreList << 89 << 99 << 78; 11 //給欄位繫結相應的值,必須按順序繫結 12 query.addBindValue(nameList); 13 query.addBindValue(ageList); 14 query.addBindValue(scoreList); 15 //執行預處理命令 16 query.execBatch();
(4)遍歷輸出
1 query.exec("select * from student"); 2 while (true == query.next()) { //一行一行遍歷 3 //取出當前行的內容,以列為單位 4 qDebug() << query.value(0).toInt() //取第一列 5 << query.value(1).toString() //取第二列 6 << query.value("age").toInt() 7 << query.value("score").toInt(); 8 }
完整程式碼:
1 #include "widget.h" 2 #include "ui_widget.h" 3 #include <QDebug> 4 #include <QSqlDatabase> 5 #include <QMessageBox> 6 #include <QSqlError> 7 #include <QSqlQuery> 8 9 10 Widget::Widget(QWidget *parent) : 11 QWidget(parent), 12 ui(new Ui::Widget) 13 { 14 ui->setupUi(this); 15 16 //列印qt支援的資料庫驅動 17 qDebug() << QSqlDatabase::drivers(); 18 19 //新增sqlite資料庫 20 db = QSqlDatabase::addDatabase("QSQLITE"); 21 //設定資料庫 22 db.setDatabaseName("../info.db"); 23 //開啟資料庫 24 if (db.open() == false) { 25 QMessageBox::warning(this, "錯誤", db.lastError().text()); 26 return; 27 } 28 //操作sql語句 29 QSqlQuery query; 30 query.exec("create table student(id int primary key, name varchar(255), age int, score int);"); 31 //批量插入:odbc風格 32 //預處理語句 33 query.prepare("insert into student(name, age, score) values(?, ?, ?);"); 34 // 給欄位設定內容 35 QVariantList nameList; 36 nameList << "xiaoming" << "xiaokong" << "xiaojiang"; 37 QVariantList ageList; 38 ageList << 22 << 21 << 24; 39 QVariantList scoreList; 40 scoreList << 89 << 99 << 78; 41 //給欄位繫結相應的值,必須按順序繫結 42 query.addBindValue(nameList); 43 query.addBindValue(ageList); 44 query.addBindValue(scoreList); 45 //執行預處理命令 46 query.execBatch(); 47 48 query.exec("select * from student"); 49 while (true == query.next()) { //一行一行遍歷 50 //取出當前行的內容,以列為單位 51 qDebug() << query.value(0).toInt() //取第一列 52 << query.value(1).toString() //取第二列 53 << query.value("age").toInt() 54 << query.value("score").toInt(); 55 } 56 } 57 58 Widget::~Widget() 59 { 60 delete ui; 61 }View Code