Qt之操作資料庫(SQLite)例項
阿新 • • 發佈:2019-01-10
QtSql模組提供了與平臺以及資料庫種類無關的訪問SQL資料庫的介面,這個介面由利用Qt的模型檢視結構將資料庫與使用者介面整合的一套類來支援。
QSqlDatabase物件象徵了資料庫的關聯。Qt使用驅動程式與各種資料庫的應用程式設計介面進行通訊。Qt的桌面版(Desktop Edition)包括如下一些驅動程式:
驅動程式資料庫
QDB2IBM DB2 7.1版以及更新的版本
QIBASEBorland InterBase
QMYSQLMySql
QOCI甲骨文公司(Oracle Call Interface)
QODBC ODBC(包括微軟公司的QSL服務)
QPSQL PostgreSQL的7.3版以及更高版本
QSQLITEQSLite第3版
QSQLITE2QSLite第2版
QSqlDatabase物件象徵了資料庫的關聯。Qt使用驅動程式與各種資料庫的應用程式設計介面進行通訊。Qt的桌面版(Desktop Edition)包括如下一些驅動程式:
驅動程式資料庫
QDB2IBM DB2 7.1版以及更新的版本
QIBASEBorland InterBase
QMYSQLMySql
QOCI甲骨文公司(Oracle Call Interface)
QODBC ODBC(包括微軟公司的QSL服務)
QPSQL PostgreSQL的7.3版以及更高版本
QSQLITEQSLite第3版
QSQLITE2QSLite第2版
QTDS Qybase自適應伺服器
訪問QSqlite資料庫的例項:
步驟:
1、建立Qt控制檯程式。
2、在pro問價中新增QT +=sql;
3、在main.cpp中新增如下程式碼:
#include <QCoreApplication> #include <QSql> #include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery> #include <QString> #include <QFile> #include <QDebug> #include <QVariantList> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE"); database.setDatabaseName("CashSystem.db"); if(database.open()) { qDebug()<<"Database Opened"; QSqlQuery sql_query; QString create_sql = "create table member (id int primary key, name varchar(30), address varchar(30))"; //建立資料表 QString insert_sql = "insert into member values(?,?,?)"; //插入資料 QString select_all_sql = "select * from member"; sql_query.prepare(create_sql); //建立表 if(!sql_query.exec()) //檢視建立表是否成功 { qDebug()<<QObject::tr("Table Create failed"); qDebug()<<sql_query.lastError(); } else { qDebug()<< "Table Created" ; //插入資料 sql_query.prepare(insert_sql); QVariantList GroupIDs; GroupIDs.append(0); GroupIDs.append(1); GroupIDs.append(2); QVariantList GroupNames; GroupNames.append("hsp"); GroupNames.append("rl"); GroupNames.append("spl"); QVariantList GroupAddress; GroupAddress.append("南充"); GroupAddress.append("寶雞"); GroupAddress.append("南充"); sql_query.addBindValue(GroupIDs); sql_query.addBindValue(GroupNames); sql_query.addBindValue(GroupAddress); if(!sql_query.execBatch()) { qDebug()<<sql_query.lastError(); } else { qDebug()<<"插入記錄成功"; } //查詢所有記錄 sql_query.prepare(select_all_sql); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { while(sql_query.next()) { int id = sql_query.value(0).toInt(); QString name = sql_query.value(1).toString(); QString address = sql_query.value(2).toString(); qDebug()<<QString("ID:%1 Name:%2 Address:%3").arg(id).arg(name).arg(address); } } } } database.close(); // QFile::remove("CashSystem.db"); return a.exec(); }
4、執行截圖:
5、在專案的debug資料夾下,生成了對應的.db檔案,使用navicat forSqlite工具開啟,顯示結果如下: