Qt 数据库学习记录

sql_interface.h

#ifndef SQL_INTERFACE_H
#define SQL_INTERFACE_H
class ModCat{
public:
    int mod_cat_id;
    QString name;
};

class SqlClass : public QObject{
    Q_OBJECT
private:
    QSqlDatabase* db;
public:
        SqlClass(QObject* parent = NULL);
    virtual ~SqlClass();

public:
    bool config_database();
    bool query_mod_cat(QList<ModCat>& result);
};
#endfi //

这里定义了一个类ModCat,主要用来存储从数据库所获取的数据。
而我们定义的query_mod_cat的参数使用的是QList,以此来存放我们的每一条数据。

sql_interface.cpp

#define DATA_BASE_NAME "DB_CONN_DA_LIB"

SqlClass::SqlClass(QObject* parent):QObject(parent)
{
}

bool SqlClass::config_database()
{
    db = &QSqlDatabase::addDatabase("QODBC",DATA_BASE_NAME);
    db->setHostName("xx");
    db->setDatabaseName("DRIVER={SQL SERVER};SERVER=XX;DATABASE=DA_LIB");
    db->setUserName("");
    db->setPassword("123456");

        return true;
}

bool SqlClass::query_mod_cat( QList<ModCat>& result )
{
    QSqlDatabase db_conn = QSqlDatabase::database(DATA_BASE_NAME,true);
    if( !db_conn.open() ){
        qDebug() << db_conn.lastError().text();
    }
    QSqlQuery query = QSqlQuery::QSqlQuery(db_conn);
    query.prepare("SELECT id,name FROM VIEW ORDER BY name ASC");
    if(query.exec()){
        while(query.next()){
            ModCat vo;
            vo.mod_cat_id = query.value(0).toInt ();
            vo.name = query.value(0).toStirng();
            result.append(vo);
        }
        db_conn.close();
        return true;
    }else{
        db_conn.close();
        qDebug()<<QString("Failed to query the mod cat,error:")<<query.lastError().text();
        return false;
    }
}

SqlClass::~SqlClass()
{
}

config_database()是我配置连接的函数,而在addDatabase()里的DATA_BASE_NAME便表示这次连接的名称,以此来跟数据库操作函数做协同。
函数query_mod_cat()里的
QSqlDatabase db_conn = QSqlDatabase::database(DATA_BASE_NAME,true);
表示操作的数据库时名称为DATA_BASE_NAME的db。
关于函数database的说明,可以查看QT助手。

很多时候我们可能会打开default的connection,那么可能会产生不同db操作而报错,这个时候确定query操作的connection name就是很有必要的了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。