应用系统二次开发中数据库数据读取的捷径

2013-12-13 10:29:57 电力信息化  点击量: 评论 (0)
摘要:应用系统的二次开发,一般通过ODBC等数据库驱动读取数据库数据,或者由开发厂商提供接口API函数。由于数据库驱动经过了很多中间环节,而且需要考虑到通用性、兼容性等各个方面,使性能、效率大打折扣;一般
Remark
Char[36] Char[36] Integer Integer Char[36]
表二:Line_Value
线路名 线电压值 线电流值 备注
Line_name Voltage Electricity Remark
Char[36] Double Double Char[36]
表三:Line_Manager
线路名 管理班组 管理级别 备注
Line_name Manager Line_Grade Remark
Char[36] Char[36] Char[36] Char[36]
 
我们需要实时读取Line_Value表的每一个新增的电压值和其相关信息(变电所、管理班组等)。在Line_Value表上建立一个触发器Get_Voltage:
    CREATE TRIGGER user.Get_Voltage AFTER  INSERT  ON User.Line_Value   REFERENCING  NEW AS newrow  FOR EACH ROW  MODE DB2SQL WHEN ( 2>1)
BEGIN ATOMIC
    VALUES(user.get_data( (select Station_name from user.Line_base where Line_name =newrow.Line_name), newrow.Line_name,
(select Line_size from user.Line_base where Line_name =newrow.Line_name), (select Voltage_Grade from user.Line_base where Line_name =newrow.Line_name), (select Manager from user.Line_Manager where Line_name =newrow.Line_name),
newrow.Voltage,newrow.Electricity));
END;
这个触发器向自定义函数get_data传递了7个参数,分别来自三张表。Line_Value表每插入一条记录,触发器将自动把新记录的相应字段值传送至函数的7个参数,并调用自定义函数。
自定义函数收到触发器传递的参数数据后,再把数据传送到数据处理中心。传送方式可以通过共享文件(内存文件、硬盘文件)实现,也可以通过TCP/IP链路实现。前者实现简单,但灵活性小,要求数据处理中心与数据库在同一个计算机上运行;后者灵活性强,数据处理中心可以在联网的任何一台计算机运行,支持不同的操作系统。
    我们把需要读取的数据定义为如下结构:
typedef struct  {
    char       Station_name[36]; //变电所名称  Line_Base表
    char       Line_name[36];    //线路名称    Line_Base表
    long       Line_size;    //线路长度    Line_Base表
    long       Voltage_Grade;    //电压等级    Line_Base表
    char       Manager[36]   ;   //线路维护者  Line_Manager表
    double Voltage _value;   //电压值      Line_Value表
    double Electricity;      //电流值    Line_Value表
}Datastru; 
一、文件共享方式,这里只讨论内存文件的共享。
1
大云网官方微信售电那点事儿

责任编辑:和硕涵

免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞