#include<lrd.h> static LRD_INIT_INFO InitInfo={LRD_INIT_INFO_EYECAT}; static LRD_DEFAULT_DB_VERSION DBTypeVersion[]={{LRD_DBTYPE_NONE,LRD_DBVERSION_NONE}};
//这里的LRD_VAR_DESC数据结构声明是很重要的,他是用来存储sql结果数据集的结构体,第一个参数头文件中就是这么写的,第二个参数是最大行数,第三个参数是每一行的最大长度,如果获得的查询结果比定义的长,运行时就会报错,提示列被截断,最后一个参数是查询结果的类型,可以再帮助中的索引输入data types, database,列出的表格中是各种变量类型的名称 static LRD_VAR_DESC NUM ={LRD_VAR_DESC_EYECAT, 10, 32, LRD_DBTYPE_ORACLE, {1, 1, 0},DT_LONG_VARCHAR};
//下面这些句柄等变量的申请都可以照着帮助中的例子写 static void FAR * OraEnv1; static void FAR * OraSvc1; static void FAR * OraSrv1; static void FAR * OraSes1; static void FAR * OraStm1; static void FAR * OraDef1; unsigned long rownum;
vuser_init() { //初始化数据库 lrd_init(&InitInfo,DBTypeVersion); lrd_initialize_db(LRD_DBTYPE_ORACLE,3,0); lrd_env_init(LRD_DBTYPE_ORACLE,&OraEnv1,0,0); lrd_ora8_handle_alloc(OraEnv1,SVCCTX,&OraSvc1,0); lrd_ora8_handle_alloc(OraEnv1,SERVER,&OraSrv1,0); lrd_ora8_handle_alloc(OraEnv1,SESSION,&OraSes1,0);
//设置数据库名称,我的是oracle,odbc中连接数据库名称就是这个 lrd_server_attach(OraSrv1,"db_192.168.0.101",-1,0,0); lrd_ora8_attr_set_from_handle(OraSvc1,SERVER,OraSrv1,0,0);
//用户名和密码 lrd_ora8_attr_set(OraSes1,USERNAME,"eeim2",-1,0); lrd_ora8_attr_set(OraSes1,PASSWORD,"eeim2",-1,0); lrd_ora8_attr_set_from_handle(OraSvc1,SESSION,OraSes1,0,0); lrd_session_begin(OraSvc1,OraSes1,1,0,0); lrd_ora8_handle_alloc(OraEnv1,STMT,&OraStm1,0); return 0; }
Action() { //这里写上你的sql语句(我主要是需要查询的结果,如果你是插入或修改记录就不用往后看了) lrd_ora8_stmt(OraStm1,"select R_V from ce_receviablecharge where user_no = 2009070901",1,0,0);
//执行定义的sql,并且将结果行数返回到rownum中 lrd_ora8_exec(OraSvc1,OraStm1,0,0,&rownum,0,0,0,0,1);
//绑定该列 lrd_ora8_bind_col(OraStm1,&OraDef1,1,&NUM,0,0);
//设定保存列中的某个数据到row中,第二个参数为第几列,第三个参数为第几行(只能保存一个值),最后一个参数就是你想要保存到的parameter名称 lrd_ora8_save_col(OraStm1, 1, 1, 0, "result");
//这个遍历刚才查询的结果,第二个参数0表示就1行,负号表示遍历所有结果,绝对值表示实际有多少行,第三个参数表示一次遍历最大进行多少行(不能大于LRD_VAR_DESC中定义的第二个参数,即最大行数) lrd_ora8_fetch(OraStm1, -2, 2 &rownum, 0, 2, 0, 0);
//这里我用error是为了看得醒目,不要认为是出错了 lr_error_message("sql result: %s", lr_eval_string("{result}")); return 0; }
vuser_end() { lrd_session_end(OraSvc1, OraSes1, 0, 0); lrd_server_detach(OraSrv1, 0, 0); lrd_handle_free(&OraEnv1, 0); return 0; }
|