资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
SqcLib 库接口定义新的 sqc 基础库采用 c+封装,开发人员只需要从基础类 Db2Tools 派生自己的业务类。然后重载基础类的 busiLogic 方法,就可以完成自己业务逻辑处理。具体的处理流程为:1、在基础类 Db2Tools 的 run 方法中完成对具体应用参数的解析。2、run 方法调用 busiLogic 方法,完成具体的业务逻辑3、busiLogic 方法中调用基础类的常用数据库访问方法,完成对数据库的操作。4、在基础类的数据库访问方法中,除完成指定的数据库操作外,同时完成日志输出和相关事务控制。日志的输出目录为 profile 文件中定义的 AGENTTRACEDIR目录,如果没有定义,取默认路径1 函数列表1.1 数据库类(Db2Tools)该类有两个主要功能:1、 实现数据库访问2、 完成对具体业务逻辑调用和事务控制 connDb函数原形:int connDb(const char *m_para_conn)用途:连接数据库参数:m_para_conn:数据库名 dbname返回:1.输入的数据库参数不对2.密码参数环境变量设置错误3.数据库连接失败0.数据库连接成功 busiLogic函数原形:int busiLogic(void)用途:业务逻辑入口参数: 返回: run函数原形:int run(int argc,char *argv)用途:实例开始入口参数: argc:参数个数Argv:参数数组(通常取 main 函数入口参数)返回:0:成功,其它:失败 db2RunstatTab函数原形:int db2RunstatTab(char *tabname,char *file,int line)用途:对表做 runstats参数:tabname:输入需要 runstats 的表名,schema.tabname 或者 tabname(schema 默认为用户名)返回:-1:失败0:成功 db2Insert函数原形:int db2Insert(char *sqlstr,char *tabname,char *file,int line)用途:提交 insert 语句参数: sqlstr:insert sql 语句file:line:返回:-1:失败0:成功 db2Update函数原形:int db2Update(char *sqlstr,char *tabname,char *file,int line)用途:提交 update 语句参数: sqlstr:update sql 语句file:line:返回:-1:失败0:成功 db2Delete函数原形:int db2Delete(char *sqlstr,char *tabname,char *file,int line)用途:提交 delete 语句参数: sqlstr:delete sql 语句file:line:返回:-1.失败0.成功 db2DropTab函数原形:int db2DropTab(char *tabname,char *file,int line)用途:删除表参数: tabname:需要删除的表名, schema.tabname file:line:返回:-1:删除失败1:表不存在0:成功 db2DelAll函数原形:int db2DelAll(char *tabname, char *file,int line)用途:清空该表中的全部数据参数:tabname:需要删除的表名, schema.tabnamefile:line:返回:-1:删除失败1:表不存在0:成功 db2CreTab函数原形:int db2CreTab(char *sqlstr,char *tabname,char *file,int line)用途:新建一张表参数:返回:-1:建表失败1:表已经存在0:建表成功 db2GrantTab函数原形:int db2GrantTab(char *user,char *tabname,char *file,int line)用途:表付权函数,只能付 select 权限,一次只能给一个用户或者组付权参数:返回: dbRrefreshTab函数原形:int dbRrefreshTab(char *tabname,char *file,int line)用途:同步刷新表参数:返回:1.2 日期类(DateFormat)完成读日期的各种运算 CdateFormat 函数原形:CdateFormat (std:string pat)用途:构造函数参数:pat: 输入日期的格式 getMonthRoll函数原形:string getMonthRoll(int interval)用途:获得输入月份偏移 interval 后的月份参数: interval:偏移量返回:返回 yyyymm 格式的日期 getDateRoll函数原形:string getDateRoll(int intverval)用途:获得输入日期偏移 interval 后的日期参数: interval:偏移量返回:返回 yyyymmdd 格式的日期 getYearRoll函数原形:string getYearRoll(int intverval)用途:获得输入年偏移 interval 后的年份参数: interval:偏移量返回:返回 yyyy 格式的日期 setPattern 函数原形:int setPattern(std:string strFormat)用途:指定输入日期值的格式 (%Y%m%d, %Y-%m-%d)参数:strFormat:输入的日期格式 返回:-1:执行失败0:执行成功 getPattern 函数原形:string getPattern ( )用途:返回日期值的格式参数:strTime:输入的日期返回:-1:执行失败0:执行成功 dateParsing函数原形:int dateParsing(std:string strTime)用途:把表示时间的字符串 strTime 按 pattern 格式转换成 tm 结构的日期时间结构参数:strTime:输入的日期返回:-1:执行失败0:执行成功 getLastDay 函数原形:string getLastDay ()用途: 返回指定月份的最后一天参数: 返回:返回 yyyymmdd 格式的日期 getFirstDay 函数原形:string getFirstDay()用途:返回指定月份的第一天参数: 返回:返回 yyyymmdd 格式的日期 getQuater 函数原形:string getQuater ()用途:返回当前月份所在的季度参数: 返回:季度(1、2、3 、4)1.3 日志类完成日志数据 writeLogTrace函数原形:int writeLogTrace(char *m_proname,int m_ddh,int m_rwh,int m_cmdstatus,char *promptMsg1,char *promptMsg2,char *file,int line,char *fpath)用途:写 ss 日志到指定目录下参数: open_trace函数原形:int open_trace(char * tast_name)用途:打开 trace 文件参数:tast_name:程序名返回:TRACE_FD :会产生该全局变量,指向文件的指针1.4 控制表类 synTab函数原形:int synTab(FILE *trace,char *sqlstr,char *tabname,char *file,int line)用途:向同步申请表中插入需要同步的表参数:trace:日志文件句柄sqlstr:同步 sql 语法tabname:需要同步的表名file:文件名line:行号返回: writeSysLog函数原形:int writeSysLog(FILE *trace,int status,char *file,int line)用途:向统一通信表中插入程序成功失败日志参数:trace:日志文件句柄status:程序成功失败标识file:文件名line:行号返回: errorLog2 memset 函数详细说明 1。void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。3。 memset() 函数常用于内存空间初始化。如:char str100;memset(str,0,100);4。 memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为 或0 ;例:char a100;memset(a, 0, sizeof(a);memcpy 用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a100,b50; memcpy(b, a, sizeof(b);注意如用 sizeof(a),会造成 b 的内存地址溢出。strcpy 就只能拷贝字符串了,它遇到0就结束拷贝;例: char a100,b50;strcpy(a,b);如用strcpy(b,a),要注意 a 中的字符串长度(第一个0 之前)是否超过 50 位,如超过,则会造成 b 的内存地址溢出。5.补充:一点心得memset 可以方便的清空一个结构类型的变量或数组。2.1 学习笔记-Sql 语句的执行步骤及注意事项 在以上的 10 个处理步骤中, 每一步的处理都生成一个虚拟表来作为下一步的输入. 虚拟表对于调用者或输出查询来说是不存在的, 仅在最后步骤生成的表才会返回给调用者或者输出查询. 如果某一子句没有出现在 SQL 语句中, 这一步就被简单跳过.这 10 个具体步骤是:1FROM: from 子句中的两个表首先进行交叉连接(笛卡尔积), 生成虚拟表VT1。2ON: on 条件作用在 VT1 上, 将条件为 True 的行生成 VT2。3OUTER: 如果 outer join 被指定, 则根据外连接条件, 将左表 or 右表 or 多表的未出现在 VT2 查询结果中的行加入到 VT2 后生成 VT3。4WHERE: VT3 表中应用 Where 条件, 结果为真的行用来生成 VT4。5GROUP BY: 根据 Group by 指定的列, 将 VT4 的行组织到不同的组中, 生成VT5。6CLUB|ROLLUP: 超级组(分组之后的分组)被添加到 VT5 中, 生成 VT6。7HAVING: Having 用来筛选组, VT6 上符合条件的组将用来生成 VT7。8SELECT: select 子句用来选择指定的列, 并生成 VT8。9DISTINCT: 从 VT8 中删除重复的行后, VT9 被生成。10ORDER BY: 根据 Order by 子句, VT9 中的行被排序, 生成游标 10。注意事项:第一步中 FROM: 需要对两表同时存在的列添加前缀, 以免混淆.第二步中 ON: 在 SQL 特有的三值逻辑(true,false,unknown)中, unkown 的值也是确定的, 只是在不同情况下有时为 true, 有时为 false. 一个总的原则是: unknown 的值非真即假, 非假即真. 也就是时说, unknown 只能取 true 和false 里面的一个值, 但是 unknown 的相反还是 unknown.如:在 ON、WHERE 和 HAVING 中做过滤条件时, unknown 看做 false;在 CHECK 约束中, unknown 被看做是 true;在条件中, 两个 NULL 的
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号