1. 程式人生 > >Qt之操作資料庫(SQLite)例項

Qt之操作資料庫(SQLite)例項

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版

 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工具開啟,顯示結果如下: