码迷,mamicode.com
首页 > 数据库 > 详细

Qt 数据库学习记录

时间:2015-03-30 14:42:57      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:qt   4-8-6   vs2010   数据库操作   

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

Qt 数据库学习记录

标签:qt   4-8-6   vs2010   数据库操作   

原文地址:http://blog.csdn.net/bbinchina/article/details/44749709

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!