版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、关于caché学习资料整理一、caché概念1、intersystems公司产品,后关系型数据库2、整合了对象数据访问、高性能的sql访问、多维数据访问3、在caché包括一个应用服务器,提供高级对象编程、caché还提供高性能的运行环境,这一运行环境采用独特的分布式数据缓存协议技术。4、caché的objectscript的数据存取方法:对象,sql、多维数组和嵌入式html。5、caché为开发复杂的、基于网页应用程序提供了丰富的集成开发环境。caché service page(csp)技术可以进行快速开发,动态产生。
2、6、caché以多维数组存储数据,所有数据都保存在global中。7、global以如下形式表示:名称(下标1,下标2,下标3)= 值8、可以自己定制global,包括添加,删除,修改,遍历起节点。多维数组以树状的形式保存,他的每一个节点直接与磁盘和内存中的数据块相对应,因此可以达到极快的访问速度。在此基础上将多维数组映射成对象或者关系形的格式,分别由面向对象的接口和基于sql的接口进行访问。9、caché完全面向对象,可以直观的数据建模。10、应用程序通过命名空间访问数据库里的数据和程序,因此命名空间和数据库之间要建立映射,命名空间和数据库之间的映射不一定是一对一的,一个
3、数据库可以被多个命名空间访问,一个命名空间可以访问多个数据库里的数据。建立命名空间的主要工作就是建立与数据库的映射,这样做可以将程序逻辑与物理存在的数据独立开来。/命名空间是一个逻辑图,这个图把多维global数组和代码映射到数据库。11、caché 的菜单 getting started 入门文档 初学者可从中获取必要信息 start caché 启动caché 启动caché 服务 stop caché 关闭caché 关闭caché 服务。点击后选择是要关闭还是要重新启动caché。 studio 工作室 c
4、aché 的集成开发环境。 terminal 终端 通过类似于dos 的终端界面访问caché explorer 资源管理器 查看caché 中的数据资源,包括多维数组、类和例程 sql manager sql 管理器 通过关系型方式访问caché control panel 控制面板 监视和管理caché 的运行 configuration manager 配置管理器 进行基本配置,包括数据库的配置 documentation 联机文档 只有启动caché 后才可以阅读全部文档信息 remote system access >
5、 远程系统访问 在本地控制远端的caché 服务器(任意平台)。unix 系统的管理要通过这种方式实现。子菜单中同样包含了工作室,终端,资源管理器,sql 管理器,控制面板,配置管理器,联机文档等菜单项。 preferred server 当前使用的caché服务器子菜单中可以编辑caché 服务器列表。在这里配置远程服务器。我们可以在一台windows 平台的计算机上管理网络中所有的各种平台的caché 服务器。 about 关于 查看版本 exit 退出 关闭任务栏中的caché 图标12、caché terminal 常用命令:
6、zn “namespace” /切换namespace write “content” /写命令 set parameter=content /赋值命令 kill target /删除命令;不建议在一个运行中的系统使用kill,而后面不跟参数13、创建csp的两种方式:使用caché类建立对象框架来创建动态网页通过基于html的标记语言把caché脚本嵌入到html中去14、程序应该不仅能够处理复杂行为而 且能够隐藏其复杂性,这是当今顶尖应用程序所需的两大特征。15、对象能够对复杂数据进行简单建模,所以对象编程是编写复杂应用程序的最佳选择。16、caché 对象数
7、据模型和对象编程概述 caché 对象模型基于 odmg(对象数据库管理组:object database management group)标准,并且支持许多高级特性,包括多重继承。17、统一数据字典可以定义类和表,并且提供了到多维数据结构的映射,这种映射是自动产生的。18、caché 的一个独一无二的特性是它的单一数据结构。19、caché数据库的核心是高效的多维数据引擎。20、caché更新数据时使用逻辑锁,而不是锁住整个物理页,提高了并发性。21、caché的数据结构支持复杂数据的简单存储,并且不需要复杂的声明或者定义。22、为了提高执
8、行效率和降低消息传递,caché在客户端缓存了对象数据的副本,然后适时进行后台更新。23、caché引进了一种新的技术:事务型位图索引。caché支持传统的位图索引和事务型位图索引。24、企业缓存协议(ecp):具有极高性能和高扩展性能的技术。通过该协议,可以使分布式系统中的计算机共享彼此的数据库。25、容错机制:caché写映像日志和其他内嵌的功能确保了大部分硬件故障的完整性,在将客户的影响最小化的同时。快速恢复。caché还提供高级可用性配置选项,以进一步减小和消除对客户的影响,包括故障切换集群、shadow服务器和分布式ecp。26、数据
9、库加密:1.安全管理员可以指定在硬盘上对一个或者多个caché.dat(数据库)文件进行加密,这些文件中的所有内容都被加密;2.开发人员可以使用系统功能对数据进行加密/解密,随后可将其存储到数据库中或进行传送。该功能用于加密敏感数据,保证不被有权读取数据库、但没有密钥的其他用户使用。默认情况下,caché使用高级加密标准实现数据库加密,高级加密标准是一个支持128,192或者256位密钥的对称加密算法。二、caché objectscripte1、为了和其他变量和数组的名字区分开来,系统函数名字都以“$”开头。常用系统函数:$extract(stting,from
10、,to)/获取字符串子串$lenght(string)/计算字符串长度$length(字符串变量或字符串,“分隔符”) /被分隔符分割的子串的个数$horolog /包含了时间和日期,它们由逗号分开。第一部分是日期的数字,它是从1840 年12 月31 日开始计算日期的数字。第二部分是秒的数字,它是从午夜开始计算的。global中的日期时间都是以数字的形式存储的。格式为数字:1 2 3 4$zdateh 和 $zdate。$zd(日期数字,格式) 日期$zdh(日期,格式) 数字$ztime 和$ztimeh$zt(时间数字,格式) 时间 $zth(时间,格式) 数字$piece($p)格式:
11、$piece(变量,“分隔符”,位置)返回一个或者多个被分隔符分开的子串。$order($o)格式:$order(variable,direction)按照指定的方向返回一个变量的上一个或下一个索引$get($g)返回一个变量的值如果变量存在则返回变量本身,不存在则返回空$data($d)判断变量是否存在$ascii格式:$ascii(字符串变量或字符串,位置)说明:返回一个字符的ascii 值。$char格式:$char(expression,)说明:以一个整数型的串里面的数字作为ascii 码值来产生一个字符。$select格式:$select(expression:value,)说明:返
12、回第一个为真的表达式对应的值。>set a=1>write $select(a=1:5,a>1:0) /5>write $select(a=2:5,a=1:0) /0>set min=$select$translate格式:$translate(string,replace,by)说明:替换一个字符串中的字符,并返回替换后的结果。$reverse格式:$reverse(string)说明:逆序返回一个字符串。$zconvert格式: $zconvert(string,mode,trantable,handle) 说明:返回一个按照指定模式表示的字符串。mode:u
13、、l、s、w、i、o列表函数:* $length 带有两个参数的$length 函数,可以计数一个列表的元素个数。* $piece 取出列表的某一个元素。* set 命令可以新增或者替换列表的某一个元素。* $listbuild 缩写为$lb ,用来产生列表。* $listlength 缩写为$ll ,返回列表的元素个数* $list 缩写为$li , 取出一个或者多个列表的元素* $listget 缩写为$lg ,和$get 一样,但是取消了对空值引用的报错。* $listdata 缩写为$ld, 检查一个列表的元素是不是有值。* $listfind 缩写为$lf ,从指定位置开始找列表中的
14、某一个2、表达式按从左到右的计算顺序。3、事务tstart 开始一个事务tcommit 提交事务trollback 保存失败后回滚4、异常处理* $zt="error“classmethod testzt()s $zt="error" /设置一个异常tstart /开始一个事务s b="dddddd"s d=d_""_"000"w "e“tcommit /没有发生异常,提交事务q 0error /发生异常时执行set $zt=""s errormsg=$ze /$ze 获取错
15、误信息trollback /有异常,则回滚事务(golbal才可以回滚,普通变量不能回滚)quit "error"_errormsg /返回错误信息* trycatch5、caché objectscript一个最突出的特性是高度灵活、动态的数据数据存储。数据被存储在:对象属性、变量、稀疏的多维数组,允许任何类型的数据、数据库文件(global),数据库文件也是稀疏的多维数组。6、caché objectscript 中对象属性是有类型限制的,而另外三中存储类型(变量、数组、global)是完全多态的,无类型实体不需要声明或者定义,只有他们在使用的时候才
16、具有数据类型,按照他们存储时的数据要求以及在表达式里使用的要求来决定他们的数据类型。7、对数据库的直接引用(global引用)实际上是一个多维数组的引用,通过前导符“”来表示这种引用。这个符号表明这是对存储在数据库中的数据的引用,而不是临时过程的私有数据。8、html 和sql 可以嵌入到caché objectscript代码中。三、数据曾删改查1、数据查询执行查询。有两种方式: 1:调用预定义查询:通过 resultset()方法,输入类名和查询名,返回结果集(resultset)对象; set rset = #class(%resultset).%new() set rset.
17、classname = "完整类名"set rset.queryname = "类中已经写好的查询方法名" do rset.execute(“查询条件参数”)2:直接调用 sql 语句:通过 dynamicsql()方法,输入sql语句,返回结果集对象; 得到结果集对象后,执行其 execute()方法运行查询。set rset = #class(%resultset).%new()do rset.prepare(sql查询语句) do rset.execute()之后:遍历结果集对象:通过 next(),getdata()等标准结果集方法访问执行查询后
18、返回的数据。遍历结果集:while (rset.next() /取一行的数据 取查询出的数据:1、根据字段名称取:set code = rset.data("code")2、根据字段在一行里面的列号取:set data = rset.getdata(n)3、set data = rset.getdatabyname(fieldname)关闭查询:do rset.close() set sc = rset.close()例:1. class containing the queryset rset = #class(%resultset).%new() set rset.cl
19、assname = "sample.person" set rset.queryname = "byname" do rset.execute() while (rset.next(.sc) / go to the next row of the result set if ($system.status.isok(sc) / check if this succeeded without errors write rset.data("name"),! / perform business logic else / if there
20、 was an error, break out of the while loop quit if $system.status.iserror(sc) / if there was an error, process that / perform error processing 2. use the %resultset object to prepare a dynamic sql statement using the prepare method set rset = #class(%resultset).%new()do rset.prepare("select nam
21、e from sample.person where name %startswith 'a'") do rset.execute() while (rset.next(.sc) / go to the next row of the result set if ($system.status.isok(sc) / check if this succeeded without errors write rset.data("name"),! / perform business logic else / if there was an error
22、, break out of the while loop quit if $system.status.iserror(sc) / if there was an error, process that / perform error processing 2、数据添加方法1:以对象方式添加数据s object = #class(classname).%new() /创建对象 object. property = value/给对象属性赋值 object.%save()/保存方法2:用sql语句添加数据&sql(insert into pack
23、agename.sqltablename (sqlfieldname,)values(:value)3、数据更改:方法1:以对象方式更改数据s object = #class(classname).%openid(id) / 根据id得到要更改的对象object. propertyname = value/更改属性值方法2:用sql语句更改数据&sql(update packagename.sqltablename set sqlfieldname1 = value1 where sqlfieldname2 = value2)/注:sql语句中字符串用单引
24、号 不是双引号4、数据删除方法1:以对象方式删除/删除行do #class(classname).%deleteid(id)do #class(classname).%delete(oid)/删除表do #class(classname).%deleteextent()方法2:用sql语句删除/删除行&sql(delete packagename.sqltablename where sqlfieldname = value)/注:sql语句中字符串用单引号 不是双引号/删除表&sql(drop table packagename.sqltablename)
25、terminate端类方法的调试class文件d #class(web.classname).functionname(参数1,参数2.) q后面没有返回值w #class(web.classname).functionname(参数1,参数2.) q后面有返回值 query的执行d #class(%resultset).runquery(“类名称”,”qurey名称”,”参数1”,”参数2”,.)四、组件程序开发1.javascript基础1)功能在客户端 ie 执行 用来与用户交互 数据检查、控制控制browser 的页面方式2).基本命令var 定义变量alert 生成一个独立的小窗口,
26、称作对话框,并用它来显示一条信息和一个“确定”按钮!当显示这个对话框时,暂停程序的执行。 confirm 确认选择对话框用于确定用户某个yes/no风格问题的回答。这种风格的对话框中显示一个问号和两个按钮:“确定”和“取消”。当用户单击了“确定”按钮confirm()方法返回true;否则返回false。if , else for less than (<) greater than (>) not (!) not equal (!=) equals (=) logical and (&&) logical or (|) is not a number (isnan
27、 )split 将string对象字符以某个符号分开隔开 3.属性document properties 文档对象,描述当前窗口或指定窗口对象的文档。它包含了文档从<head>到</body>的内容。document.getelementbyid document.getelementbyid("id1").value /获取或设置id1的值object properties obj.tagname obj.classname obj.type obj. checked obj. value obj. disabled obj. style obj.
28、readonly4.事件document eventsdocument.body.onload=myloadhandler; 当网页打开,只能书写在body中onunload 当网页关闭或离开时,只能书写在body中 object eventsobj.onclick=myonclick; 当对象被点击 obj.onkeydown=mykeydown; 按回车obj.onchange = mychange; 当对象的内容被改变 obj.onblur= myblur; 当对象失去焦点 obj.onmouseover 当鼠标悬于其上时 obj.onmouseout 当鼠标离开对象时 obj.onmo
29、useup 当鼠标松开 obj.onmousedown 当鼠标按下键 obj.onfocus 当对象获取焦点时 obj.onselect 当对象的文本被选中时 我们在使用object.onxxx = handler是需要保证object已经在页面中生成。比如我们为document.body赋予事件处理函数,我们必须保证document.body已经存在,就是说我们不能在<body>之前在的全局语句中使用document.body; handler必须是函数名2.创建组件过程1)创建组件;进入组件管理器,选择要连接的数据库,如下图所示选择连接的数据库后,点击进入,然后新建组件comp
30、onentnew component,提示create a new component?,选择”是”.系统会默认的创建组件的名称,选中名称,点击右键,进入component properties,如下修改组件的名称,同时把display type修改成custom,点击apply按钮,保存所做的改变。2)创建组件上的元素选中组件名称,点击右键,进入add item(s) to component ,进入界面如下:custom item 组件上的单个元素custom table item 以列表的形式显示的元素根据实际需求选择要创建的元素类型对于要创建的元素打勾,然后fileapply3)修改元
31、素属性选中元素,右键 item properties (或双击),如下图所示name:元素名称caption:界面上显示的名称display type:textbox,listbox,checkbox,link,button等data type属性:元素显示的数据类型,如日期,字符串等注意:query finddeposit() as %query(rowspec = "tprtdate:%string,tprttime:%string,tpapname:%string,tpapno:%string,tpayamt:%string")中的rowspec中的tprtdate,
32、tprttime等不一定是组件上的元素名称,是返回界面的值outputrow中的 set data=$lb(prtdate,prttime,papname,papno,payamt) $lb内的是要输出的值,这些变量的位置要和rowspec内的变量相对应,这样,才能在table的相应的列对应的显示内容组件的属性:连接class和query名称(在修改时要先把组件的显示类型修改成除custom之外的类型才能修改)组件的类型是:修改后组件的显示类型修改成custom如果是带参数的查询程序,则相应的参数为组件上的元素,那么在点击查找的时候会自动传入参数;4.组件程序的开发(以押金收据购入程序)1).
33、放大镜,不带参数,带有参数组件元素为:custom item元素的lookup如下图所示放大镜要显示的内容写成querylookupclassname:要调用的类的名称lookupqueryname:要调用的query名称lookupproperties:传入的参数,如果没有入参则为空,参数为组件上元素的名称lookupjsfunction:js文件里调用的js函数2).js文件创建,js文件的调用;创建的js文件的名称必须要和对应的组件的名称一致如果js文件里调用其他js文件里的函数,则要在组件的otherscript里把js文件的名称添加进来,就可以调用里面的函数了3).前端页面元素调用后
34、台的classmethod的方法; 前端页面调用后台的类方法是通过函数js函数里调用csprunservermethod(参数1,参数2,参数3.。)来实现参数1为固定参数,传入的值为要调用的后台的类方法那么入参的获取是通过组件上的某个元素来获得的如组件udhcjfrcptbuy中的添加按钮,是通过调用元素ins1来获取后台要执行的方法(valueget)4).执行后台的classmethod之后接收返回结果的两种方法;1直接通过csprunservermethod(参数1,参数2,参数3.。)返回结 果,可以定义变量直接接收返回结果;如果采用此方式,要求 classmethod的q 后面返回
35、变量 var returnvalue returnvalue= csprunservermethod(参数1,参数2,参数3.。)2通过csprunservermethod(参数1,参数2,参数3.。)里的某个参 数接收返回值,如可以利用参数2接收后台的返回值 如接收返回值的参数的名称为getreturnvalue,那么在传入参数的时 候要传到后台csprunservermethod(参数1,getreturnvalue,参数 3.。) 在class端,getreturnvalue已经传入,那么通过 s retval= getreturnvalue _"('"_$z
36、cvt(返回值,"o","js")_"');" &javascript<#(retval)#>,通过javascript把结果返回页面 在js文件里有个函数名称为getreturnvalue(value),接收返回值括号 内的value就是返回值,然后可以根据需求对返回值做相应处理6).selectrowhandler的用途;(周一)可以获取table的行数和当前选中的记录的行可以选中某个记录,获取选中记录的各元素的值获取到选中的行var esrc=window.event.srcelement;var r
37、owobj=getrow(esrc);var selectrow=rowobj.rowindex;获取table的记录数var objtbl=document.getelementbyid('tudhcjfrcptbuy');var rows=objtbl.rows.length;获取table上某一行的某个元素的值var selrowobj=document.getelementbyid('tbuyrowidz'+selectrow);var buyrowid=selrowobj.innertext;其中tbuyrowid为元素的名称,z要加到元素名称的后面,
38、selectrow为行号;如果是显示的列则用selrowobj.innertext;如果是隐藏的列则用selrowobj.value7).linklinkurl:websys.default.csp(在输入组件名称时会自动输入)linkcomponent:要link的组件的名称linkexpression:要传入到所link的组件的名称如果要在新的窗体中打开组件:在general页签处,设置新打开窗体的大小showinnewwindow:top=30,height=650,left=8,width=10008).按钮中打开新的组件var str='websys.default.csp?
39、websys.tcomponent=udhcjfdeposit&adm='+adm+'&deposittype='+t'01'window.open(str,'_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width=1000,height=700,left=0,top=0')9).message的定义在组件属性的message页
40、签,定义code,description在js文件里调用时用tcode,获取description五类文件的导出与导入切换namespace到websource下1.导出tools-export,进入如下界面可以导成.xml文件,也可以导成.cdl文件,然后add要导出的类文件的名称(websource/web目录下),输入要导出的文件保存的路径,可以是本地,也可以是服务器,点ok即可2.导入同样,转换namespace到websourcetools-import local(或import remote),选择要导入的文件进入如下界面是否把导入的文件加到打开的工程里,如果是则第一个checkbox打勾;是否自动编译导入的文件;如果编译则打勾;六组件程序的导出与导入1.在界面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中生借助可再生能源技术设计可持续校园方案的课题报告教学研究课题报告
- 2025年汽车维修企业财务管理制度
- 信息软件公司子公司管理制度
- 桥梁施工质量管理标准流程
- 养生馆公司章程标准文本范例
- 药师心理健康与职业压力管理
- 企业薪酬激励机制设计案例分析
- 饮食中脂肪含量明细表与健康指导
- 连锁超市商品库存盘点标准流程
- 慢性疾病患者腹泻诊疗流程指南
- 产品推广项目管理办法
- (2025秋新版)人教版二年级数学上册全册教案(教学设计)
- 内科护理副高答辩题库及答案
- 小学无废校园教学课件
- 地产公司品牌策划方案
- 2025年高考真题-化学(黑吉辽卷) 含答案(黑龙江、吉林、辽宁、内蒙古)
- 初三英语阅读竞赛含答案
- 中学生英语词汇表3500(全)
- 2025年全国基层退役军人服务中心(站)工作人员职业技能竞赛备考试题库(含答案)
- 物业催费技巧培训
- 品质例会管理制度
评论
0/150
提交评论