QxOrm的学习使用

来源:互联网 发布:威斯盾断桥铝 知乎 编辑:程序博客网 时间:2024/05/22 16:12

因工作需要,将原来花了很多时间写的sqlite3的数据库操作模块全部换成QxOrm库来实现数据库操作:

1)将数据库表封装成一个类:

xxx.h

#include "precomplied.h"

class CDerrick
{
public:
    CDerrick(void){};
    virtual ~CDerrick(void){};
public:
    int m_Level;
    int m_Column;
    long     m_id;
    QString m_Device;
    QString m_Elestic;
};
//QX_REGISTER_PRIMARY_KEY(CDerrick, QString)  //用来注册数据表主键类型为QString


QX_REGISTER_HPP_MY_TEST_EXE(CDerrick, qx::trait::no_base_class_defined, 1) 

xxx.cpp

#include "Derrick.h"
#include "precomplied.h"
#include <QxMemLeak.h>


QX_REGISTER_CPP_MY_TEST_EXE( CDerrick )


namespace qx
{
    template<> void register_class(QxClass< CDerrick > &t)
    {
        t.id( &CDerrick::m_id, "id" );
        t.data( &CDerrick::m_Level, "Level");
        t.data( &CDerrick::m_Column, "Column" );
        t.data( &CDerrick::m_Device, "Device" );
        t.data( &CDerrick::m_Elestic, "Elestic" );
    }
}

以上不解释

其中插入数据、删除数据也不做多说,网上收一收,其中drug的例子写的很详细,这里说一下drug里没有的东西

1修改操作:

QSqlError qx::dao::update_by_query(const qx::QxSqlQuery & query,  T & t,  QSqlDatabase * pDatabase = NULL,  const QStringList & columns = QStringList()  ) [inline

第一个参数为查询的条件,第二个参数为对像类型,我原来的想法是将满足条件的数据都给更新,如:

query = qx::QxSqlQuery("where Device = "12"); 

update_by_query( query,  t);  

但是执行后,没有成功,后来查看它执行的SQL语句发现,更新操作语句中会自动添加id(主键)的条件:

update mytable set id = :id, Level = :level,,,,,where id = :id_bis and Device = '12',这样执行当然不会成功。 

2、想使用联合主键,但是没有找到方法,如果知道方法的童鞋,谢谢告知一下。

3、查找操作:

QSqlError qx::dao::fetch_by_id(T & t,  QSqlDatabase * pDatabase = NULL,  const QStringList & columns = QStringList()  )
这个不解释



QSqlError qx::dao::fetch_all(T & t,  QSqlDatabase * pDatabase = NULL,  const QStringList & columns = QStringList()  )此函数用来返回所有的数据,其中T& t, 可传入一个链表如:QList<CDerrick> list;

QSqlError qx::dao::fetch_all(T & t,  QSqlDatabase * pDatabase = NULL,  const QStringList & columns = QStringList()  )
QSqlError qx::dao::fetch_by_query(const qx::QxSqlQuery & query,  T & t,  QSqlDatabase * pDatabase = NULL,  const QStringList & columns = QStringList()  )这个是按照条件查询数据



QSqlError qx::dao::fetch_all(T & t,  QSqlDatabase * pDatabase = NULL,  const QStringList & columns = QStringList()  )
0 0
原创粉丝点击