【五】ODB - C++ 表单列函数count、min、max(V1.0)

原文地址http://www.codesynthesis.com/products/odb/doc/manual.xhtml#2.7

表单列函数主要作用:是用C++类的成员对象来盛放表单的列函数结果。

使用方式:

1 在模板头文件中定义盛放结果的结构体,这个结构体的定义完全隶属于person类,所以放到person类的头文件中定义最好。

#pragma db view object(person)
struct person_stat
{
  #pragma db column("count(" + person::id_ + ")")
  std::size_t count;

  #pragma db column("min(" + person::age_ + ")")
  unsigned short min_age;

  #pragma db column("max(" + person::age_ + ")")
  unsigned short max_age;
};

2 用odb命令行重新编译person.hxx头文件,生成新的-odb.hxx和-odb.cxx文件,放到项目中使用。

3 调用源代码:

#include <memory>   // std::auto_ptr
#include <iostream>

#include <odb/database.hxx>
#include <odb/transaction.hxx>

#include <odb/mysql/database.hxx>

#include "person.hxx"
#include "person-odb.hxx"

using namespace std;
using namespace odb::core;

int
	main (int argc, char* argv[])
{
	try
	{
		auto_ptr<odb::database> db (
			new odb::mysql::database (
			"root"     // database login name
			,"123456" // database password
			,"collect" // database name
			,"localhost"
			,13306
			));
		{
			transaction t (db->begin ());

			person_stat ps (db->query_value<person_stat> ());

			cout << "count  : " << ps.count << endl
				<< "min age: " << ps.min_age << endl
				<< "max age: " << ps.max_age << endl;

			t.commit ();
		}
	}
	catch (const odb::exception& e)
	{
		cerr << e.what () << endl;
		return 1;
	}
	cin.get();
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值