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就是很有必要的了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值