Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1844185
  • 博文数量: 323
  • 博客积分: 5970
  • 博客等级: 大校
  • 技术积分: 2764
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-03 23:13
文章分类

全部博文(323)

文章存档

2018年(2)

2017年(11)

2016年(10)

2015年(27)

2014年(2)

2013年(30)

2012年(197)

2011年(44)

分类: WINDOWS

2012-06-28 10:20:13

(一)如果选择录制脚本的话

1、vugen会生成以下这些跟协议不同的文件

vdf.h

作用:定义各种变量

print.inl

作用:打印表格使用的函数。录制脚本时才有用,写脚本的话没有用

oracle20090225b.grd

作用:打印表格的格式。录制脚本时才有用,写脚本的话没有用

oracle20090225b.rdf

作用:这个不大清楚,应该是打印表格的内容。用ue打开都是些框框。录制脚本时才有用,写脚本的话没有用

2、录制脚本的好处

  需要的东西什么都有了。只要找到要执行的。然后将其中的sqltext部分参数化掉就可以了。

   select时生成的几个表格不错。可以在上面完成参数的保存和将搜索的结果保存成dat文件。用起来还是比较直观的

3、录制脚本不好的地方

使用plsql或者toad这样的工具录制出来的脚本有很多的操作就是中不需要的。对于不了解lr脚本的用户来说这些东西会造成一些麻烦。了解的话把这些不需要的语句都去掉就行了。

(二)如果选择自己写脚本的话

需要用到以下这些语句

#include "lrd.h"

static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};
static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =
{
        {LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}
};


//定义各种变量。录制生成的脚本中,这些变量的定义在vdf.h中。
static void FAR *       OraEnv1;

。。。

unsigned long           rownum;
static unsigned long        uliRowsProcessed;
static unsigned long        uliFetchedRows;

static LRD_VAR_DESC      MEMBERCODE_D55 =
    {LRD_VAR_DESC_EYECAT, 500, 8, LRD_DBTYPE_ORACLE, {1, 0, 0},

。。。。

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);

//连接数据库
lrd_server_attach(OraSrv1, "aaa", -1, 0, 0); //这里填写数据库的名称
lrd_ora8_attr_set_from_handle(OraSvc1, SERVER, OraSrv1, 0, 0);

//设定数据库密码
lrd_ora8_attr_set(OraSes1, USERNAME, "aaa", -1, 0); //这里填写用户名
lrd_ora8_attr_set(OraSes1, PASSWORD, "bbb", -1, 0);//这里填写密码

//初始化连接session
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, &OraStm4, 0);
}

Action()
{//设定查询语句
lrd_ora8_stmt(OraStm4, "select * from member", 1, 0, 0);//这里填写SQL语句

//执行查询语句
lrd_ora8_exec(OraSvc1, OraStm4, 0, 0,&rownum, 0, 0, 0, 0, 1);


//这些无聊的东西不绑定的话无法执行lrd_ora8_fetch。一个查询结果的每个字段都要绑定一下。像这样的东西OraDef37,MEMBERCODE_D55。需要在上面定义一下
 lrd_ora8_bind_col(OraStm4, &OraDef37, 1, &MEMBERCODE_D55, 0, 0);
//保存变量第1列 第1行。保存到参数a中。通过这个就可以在之后使用查询到的直的。这个函数一般用在fatch之前。
 lrd_ora8_save_col(OraStm4,1,1,0,"a");
//执行fetch。倒数第4个参数是0。在帮助中是PrintRow1这类的东西,这是在print.inl那个文件中定义的用来把表格打出来的函数。这里用0就是不用这个打印的东西,这样的话也就用不到print.inl这个文件和其他的定义打印表格格式的文件了。
 lrd_ora8_fetch(OraStm4, 2,2, &uliFetchedRows, 0, 2, 0, 0);

 lr_output_message("%s.%s",lr_eval_string("{a}"));


}

vuser_end()
{
//释放数据库连接
lrd_handle_free(&OraStm4, 0);
lrd_session_end(OraSvc1, OraSes1, 0, 0);
lrd_server_detach(OraSrv1, 0, 0);
lrd_handle_free(&OraEnv1, 0);

}


阅读(1836) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~