yulihua49
发表于 2016-10-12 13:26
本帖最后由 yulihua49 于 2016-10-12 13:36 编辑
BetonArmEE 发表于 2015-11-06 20:33
回复 14# yulihua49 动态的不行,一般都是写代码时就确定了要操作的表名和字段名,至少某商业银行核心系统里4000多个交易中还没有需要动态指定表名字段名的技术需求,够用就行,太灵活也带来复杂易错性和性能相对降低,简单、直接就是稳定、高效。
我现在:
<p>static int ins_JSON(GDA *context,const char *tabname,JSON_OBJECT rows,JSON_OBJECT err_json)
{
int ret,i,n;
char stmt,*p,*recs=NULL,*summary_p,*summary_recs=NULL;
int ins_rows=0,ddt_rows=0,rec_size,summary_recsiz,summary_num;
DAU dau,*dp,summary_DAU;
char summary_tabname;
T_PkgType *tp;
if ( !rows ) return -1001;
n=json_object_array_length(rows);
if ( n < 1 ) return -1002;
dp=&dau;
dau.pos=context->poolno;
summary_DAU.pos=context->poolno;
//取得数据库模板
ret=DAU_mk(&dau,context->SQL_Connect,tabname);//这个tabname的模板就取到了,不管它有多少列。</p><p>表名是任意的,完全的泛型处理。
</p>这个工具很成熟,极其可靠,已经用在生产环境。而且性能非常高,往往比你自己写SQL效率高得多。
evaspring
发表于 2016-10-13 15:10
:em17:在下佩服
Traxex
发表于 2016-11-04 02:31
我也实现了个。。
没有用宏
class myclass: public object<myclass> {
public:
myclass(){}
static void static_this()
{
install_property("count", &myclass::get_count, &myclass::set_count);
}
const int&get_count() { return count_; }
void set_count(const int& value) { count_ = value; }
private:
int count_;
};
yulihua49
发表于 2016-11-08 18:24
Traxex 发表于 2016-11-04 02:31
我也实现了个。。
没有用宏
这说明啥?
pandaiam
发表于 2016-11-25 14:11
能不能简洁的讲下反射。。。
yulihua49
发表于 2016-11-25 21:26
回复 25# pandaiam 就是在运行时能够知道一个对象内部的数据,如名称,属性(类型,长度,。。。。),位置,权限等等。