QxOrm 使用-Oracle连接测试

使用-Oracle连接测试

  1. 引入
    必要目录:include,inl,lib
    必要文件:QxOrm.pri,此文件中包含必要必要的定义,export.h,precompiled.h,这两文件可以直接使用test目录中demo的文件
    引用目录结构如下:
    请添加图片描述

  2. 配置

项目pro文件引入QxOrm.pri文件

include(./QxOrm/QxOrm.pri)

为便于QxOrm项目使用,将QxOrm相关的项目配置直接补充到QxOrm.pri中,如图

请添加图片描述

#补充内容


INCLUDEPATH += $$PWD\
            $$PWD/include\
            $$PWD/inl\
            $$PWD/lib\

HEADERS += \
    $$PWD/export.h \
    $$PWD/precompiled.h \

win32: LIBS += -L$$PWD/lib/ -lQxOrm
DEPENDPATH += $$PWD/lib
  1. 新建表结构类
#ifndef USER_H
#define USER_H

#include "precompiled.h"
#include <QString>

#define QXORM_TABLENAME_USER "USER"

class QX_DLL_EXPORT_HELPER  User
{
public:
    User();

public:
    long long id;//编号,主键
    QString strName;//姓名
    QString strPerCode;//工号

/*固定SQL语句*/
public:
    static QString strSQLQueryAll;
    static QString strSQLQueryMaxNBBH;

};

typedef QSharedPointer<User> UserPtr;
typedef qx::QxCollection<int, UserPtr> List_user;
QX_REGISTER_PRIMARY_KEY(User, long long)    //否则默认是long,精度可能不够
QX_REGISTER_HPP_APP(User, qx::trait::no_base_class_defined, 1)
#endif // USER_H

#include "user.h"

#include <QxOrm_Impl.h>

QX_REGISTER_CPP_APP(User)

namespace qx{
template<> void register_class(QxClass<User> & t)
{
    qx::IxDataMember * pPk = t.id(&User::id, "NBBH");
    pPk->setAutoIncrement(false);//Oracle 不支持字段自增,需取消

    t.data(&User::strName, "NAME");
    t.data(&User::strPerCode, "PERCODE");

    t.setName(QXORM_TABLENAME_USER);
}
}

QString User::strSQLQueryAll = QString("select * from ") + QXORM_TABLENAME_USER;
QString User::strSQLQueryMaxNBBH = QString("select MAX(NBBH) as MAXID from ") + QXORM_TABLENAME_USER;
User::User()
{

}

  1. 调用
#include "mainwindow.h"
#include <QApplication>

#include "precompiled.h"
#include "user.h"
#include <QxOrm_Impl.h>

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);

    // 初始化参数,用于和数据库交互
   qx::QxSqlDatabase::getSingleton()->setDriverName("QOCI");
   qx::QxSqlDatabase::getSingleton()->setDatabaseName("*****");//Oracle服务名SID
   qx::QxSqlDatabase::getSingleton()->setHostName("127.0.0.1");
   qx::QxSqlDatabase::getSingleton()->setUserName("admin");
   qx::QxSqlDatabase::getSingleton()->setPassword("password");


   QSqlError daoError;

/* 在数据库中创建表*/
/*
  daoError = qx::dao::create_table<User>();//若User未指定表名,则会将类名做表名
*/

/*查询操作*/

  //通过SQL进行检索,映射到 typedef qx::QxCollection<int, User_ptr> List_user;中
   List_user list_user;
   qx_query query(User::strSQLQueryAll);
   daoError = qx::dao::execute_query(query, list_user);
   List_user::iterator it = list_user.begin();

   qDebug() << "------------------分隔,在这给我分割------------------";
   while(it != list_user.end()){

       qDebug() << "id:" << it.i->t().second->id;
       qDebug() << "name:" << it.i->t().second->strName;
       qDebug() << "percode:" << it.i->t().second->strPerCode;
       it++;
   }
   qDebug() << "------------------分隔,在这给我分割------------------";


/*
   int nbbh = 1000;
   UserPtr u1;
   u1.reset(new User());
   u1->id = nbbh++;
   u1->strName = "zhao1";
   u1->strPerCode = "9001";

   UserPtr u2;
   u2.reset(new User());
   u2->id = nbbh++;
   u2->strName = "zhao2";
   u2->strPerCode = "9002";

   UserPtr u3;
   u3.reset(new User());
   u3->id = nbbh++;
   u3->strName = "zhao3";
   u3->strPerCode = "9003";

   // 将所有用户插入容器中
   // 可以使用 std、boost、Qt 和 qx::QxCollection<Key,Value> 中的许多容器
   typedef QVector<UserPtr> VectorUser;
   VectorUser users;
   users.push_back(u1);
   users.push_back(u2);
   users.push_back(u3);

   // 将容器中的所有用户插入到数据库中
   daoError = qx::dao::insert(users);
*/
    MainWindow w;
    w.show();

    return a.exec();
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值