




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Caché數(shù)據(jù)庫開發(fā)培訓(xùn)教程
目錄
第一章Caché簡介第二章Caché安裝配置及開發(fā)環(huán)境介紹第三章Caché的多維存儲結(jié)構(gòu)第四章FDBMS與持久類介紹第五章CachéObjectScript第六章Caché面向?qū)ο箝_發(fā)第一章Caché簡介1、Caché數(shù)據(jù)庫是InterSystems公司的產(chǎn)品
為適應(yīng)Internet迅猛發(fā)展對數(shù)據(jù)庫信息技術(shù)的需求,InterSystems公司在多年來已得到國際上公認(rèn)的以M技術(shù)開發(fā)和運(yùn)行大型應(yīng)用系統(tǒng)所積累的可靠經(jīng)驗的基上,經(jīng)過積極的開發(fā)和演變,推出了舉世無雙的Caché的數(shù)據(jù)庫管理系統(tǒng)
產(chǎn)品;2、Caché被譽(yù)為創(chuàng)新的“后關(guān)系型”數(shù)據(jù)庫
Caché是新一代高性能數(shù)據(jù)庫技術(shù),被譽(yù)為創(chuàng)新的“后關(guān)系型”數(shù)據(jù)庫(PostrelationalDatabase)作為后關(guān)系型數(shù)據(jù)庫,它整合了對象數(shù)據(jù)庫訪問、高性能的SQL訪問、強(qiáng)大的多維數(shù)據(jù)訪問——這三種方法能夠天衣無縫地同時訪問相同的數(shù)據(jù)。3、Caché包括應(yīng)用服務(wù)器
Caché提供不僅是一種單純的數(shù)據(jù)庫技術(shù)。在
Caché中包括一個應(yīng)用服務(wù)器,這個服務(wù)器提供高級對象編程,并且可以很容易地與很多技術(shù)集成。Caché還提供高性能的運(yùn)行環(huán)境,這一運(yùn)行環(huán)境采用了獨特的分布式數(shù)據(jù)緩存協(xié)議技術(shù)。4、Caché的編程技術(shù)--M語言
Caché提供了可以用多種技術(shù)編寫數(shù)據(jù)庫和業(yè)務(wù)邏輯的能力。
Caché的
ObjectScript支持所有數(shù)據(jù)存取方法:對象,
SQL,
多維和嵌入式
HTML。CachéBasic與
VisualBasic非常相似,只是做了很少的調(diào)整擴(kuò)展,以便利用
Caché獨特的性能。5、Caché的CSP技術(shù)
Caché為開發(fā)復(fù)雜的、基于網(wǎng)頁應(yīng)用程序提供了豐富的集成開
發(fā)環(huán)境。CachéServicePage(CSP)技術(shù)可以進(jìn)行快速開發(fā),
動態(tài)產(chǎn)生。上千個用戶甚至在比較差的硬件條件下也可以
同時訪問數(shù)據(jù)上的應(yīng)用程序。6、Caché應(yīng)用系統(tǒng)典型架構(gòu)
7、Caché的優(yōu)勢
Caché完全面向?qū)ο螅蛇M(jìn)行直觀的數(shù)據(jù)建模
靈活性:Caché的三種訪問模式—對象,SQL,直接訪問多維數(shù)據(jù)結(jié)構(gòu)快速應(yīng)用開發(fā)
使用高效多維數(shù)據(jù)模型
……8、Caché的不同版本介紹
508(項目少),5015,
524,2010.2.8
練習(xí)
了解Caché的基礎(chǔ)知識
參考:http://localhost:57772/csp/docbook/DocBook.UI.HomePageZen.cls第二章Caché安裝配置及開發(fā)環(huán)境介紹1、開發(fā)環(huán)境
1.1開發(fā)環(huán)境B/S架構(gòu)
Web容器:IIS
開發(fā)語言:m
數(shù)據(jù)庫:Caché2、Caché安裝配置
2.1、IIS安裝
2.2、見Ensemble安裝說明.doc3、Caché開發(fā)環(huán)境介紹
3.1、Ensemble的菜單GettingStarted入門文檔初學(xué)者可從中獲取必要信息StartCaché啟動Caché啟動Caché服務(wù)StopCaché關(guān)閉Caché關(guān)閉Caché服務(wù)。點擊后選擇是要關(guān)閉還是要重新啟動Caché。Studio工作室
Caché的集成開發(fā)環(huán)境。Terminal終端通過類似于DOS的終端界面訪問Caché[Home]>[Configuration]>[LocalDatabases]數(shù)據(jù)庫路徑配置[Home]>[SQL]>[ExecuteSQLQuery]通過關(guān)系型方式訪問Caché[Home]>[Globals]查看Caché中的數(shù)據(jù)資源,包括多維數(shù)組、類和例程[Home]>[Processes]SystemManagementPortal查看Caché當(dāng)前進(jìn)程Documentation聯(lián)機(jī)文檔只有啟動Caché后才可以閱讀全部文檔信息RemoteSystemAccess>遠(yuǎn)程系統(tǒng)訪問在本地控制遠(yuǎn)端的Caché服務(wù)器(任意平臺)。UNIX系統(tǒng)的管理要通過這種方式實現(xiàn)。子菜單中同樣包含了工作室,終端,資源管理器,SQL管理器,控制面板,配置管理器,聯(lián)機(jī)文檔等菜單項。PreferredServer當(dāng)前使用的Caché服務(wù)器子菜單中可以編輯Caché服務(wù)器列表。在這里配置遠(yuǎn)程服務(wù)器。我們可以在一臺Windows平臺的計算機(jī)上管理網(wǎng)絡(luò)中所有的各種平臺的Caché服務(wù)器。About…關(guān)于查看版本Exit退出關(guān)閉任務(wù)欄中的Caché圖標(biāo)3.2、Studio
CachéStudio是Caché主要的開發(fā)環(huán)境,它是一個集成的可視化的開發(fā)環(huán)境。它提供了許多高性能的特性,幫助用戶進(jìn)行快速開發(fā)。這些特性主要包括如下的幾部分:可以在這一個單獨的集成環(huán)境中定義Class、Routine,生成CSP文件。
功能強(qiáng)大的文字編輯功能,并對各種通用語言進(jìn)行語法檢查。支持團(tuán)隊協(xié)同開發(fā)。圖形化的代碼級調(diào)試器??梢栽诠こ讨胁贾脩?yīng)用程序代碼。3.3、Terminal
終端調(diào)試平臺3.4、命名空間與數(shù)據(jù)庫的映射關(guān)系
應(yīng)用程序通過命名空間訪問數(shù)據(jù)庫里的數(shù)據(jù)和程序,因此,命名空間和數(shù)據(jù)庫之間要建立映射。命名空間和數(shù)據(jù)庫之間的映射不一定是一對一的。一個數(shù)據(jù)庫可以被多個命名空間訪問;相反,一個命名空間可以訪問多個數(shù)據(jù)庫里的數(shù)據(jù)。建立命名空間的主要工作就是建立與數(shù)據(jù)庫的映射,這樣做可以將程序邏輯與物理存在的數(shù)據(jù)獨立開來,便于開發(fā)人員專注于系統(tǒng)功能設(shè)計,不需要為未來實施時不同的系統(tǒng)架構(gòu)而作出額外的工序,系統(tǒng)架構(gòu)也因為這樣變得更靈活。練習(xí)
1、自己動手安裝并配置Caché數(shù)據(jù)庫2、熟悉開發(fā)環(huán)境第三章Caché的多維存儲結(jié)構(gòu)1、多維存儲結(jié)構(gòu)介紹
Caché以多維數(shù)組存儲數(shù)據(jù),所有數(shù)據(jù)都是保存Global中。
Terminal:zn"dhc-app"Setmylocal="Thisisalocalvariable"Setstr="ThisisaString"
Set^myglobal="Thisisalocalvariable"write^開頭的變量有什么不一樣?Set^myglobal="Thisisaglobalstoredinthecurrentnamespace"^開頭的變量都是持久化的嗎?SET^||a(1)="Aprocess-privateglobalarray"(日志,事務(wù)回滾)Global以如下形式表示:^名稱(下標(biāo)1,下標(biāo)2,下標(biāo)3…)如
^AirPlane("Manufacturer","Address","Country")="US"我們可以自己定制Global,包括添加、刪除、修改、遍歷其節(jié)點。多維數(shù)組以樹狀的形式保存,他的每一個節(jié)點直接與磁盤和內(nèi)存中的數(shù)據(jù)塊相對應(yīng),因此可以達(dá)到極快的訪問速度。在此基礎(chǔ)上,我們將多維數(shù)組映射成對象或者關(guān)系型的格式,分別由面向?qū)ο蟮慕涌诨蚧赟QL的接口進(jìn)行訪問。多維數(shù)組以樹狀的形式保存,如下例:Global以如下形式表示:^名稱(下標(biāo)1,下標(biāo)2,下標(biāo)3…)=值SET^Y(3,6,7)="third"
SET^Y(3,6,8)="fourth"SET^Y(3,6,7,8,4)="fifth" SET^Y(3,6,7,8,9)="sixth"
Global的樹狀結(jié)構(gòu)如下:2、查看global的數(shù)據(jù)練習(xí)
1.Document->variables
2.
畫出如下Global的樹狀結(jié)構(gòu)
s^TMP(1)=1000
s^TMP(1,”O(jiān)”,1)=200
s^TMP(1,”O(jiān)”,3)=200
s^TMP(1,”O(jiān)”,4)=600
^TMP"1""1""0"第四章FDBMS與持久類1、FDBMS
傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(databasemanagementsystem)方式
Terminal終端操作,Table、Index、Viewzn"DHC-DATA"http://切換NameSpacedo^%msql//進(jìn)入管理界面,如下圖操作說明:
F3查看表的關(guān)聯(lián)關(guān)系;F4返回上一級;
清除:Ctrl+DeleteFDBMSzn"DHC-DATA"http://切換NameSpacedo^%msql//進(jìn)入管理頁面user/pass:system/sysDataDictionary-->BaseTableDefinition表結(jié)構(gòu)字段數(shù)據(jù)類型指向型字段父子表編譯存儲結(jié)構(gòu)索引存儲及索引定義面向?qū)ο蟮某志妙怱tudio中創(chuàng)建持久類ChangeNamespaceCreateNewClassClassTypePropertyIndexCompileStorage常用字段類型Date:日期Time:時間DesignativeReference:指向MultipleChoice:多選Number:數(shù)字Text:文本Yes/No:創(chuàng)建持久類創(chuàng)建屬性創(chuàng)建索引編譯類存儲結(jié)構(gòu)CacheStorageDataNodesDataLocationIdLocationIndexNodesIndexLocationStreamLocationSqlStorageSQLstoragemapSqlChildSubSqlRowIdName練習(xí)1、查看DHC-Data下的表CT_Zip的結(jié)構(gòu)
列出:字段(關(guān)聯(lián)表)、存儲結(jié)構(gòu)、索引
查看數(shù)據(jù):記錄條數(shù)、并copy出第一條數(shù)據(jù)的global節(jié)點2、創(chuàng)建持久類
類名:DHC_自己姓名的全拼
屬性:Test_Code(TEXT)Test_desc(text)Test_AddDate(Date)Test_AddTime(Time)Test_AddUser(指向)->ss_user
以Test_Code,Test_desc,Test_AddDate三個屬性分別建立索引建立科目表
表名DHC_Course,類名User.DHCCourse
字段Crs_RowID,Crs_Code,Crs_Desc,Crs_ActiveFlag(Y/N)Global(MasterMap):^DHCCOURSE({Crs_RowID})Index:^DHCCOURSEi(0,"Code",{Crs_Code},{Crs_RowID})Index:^DHCCOURSEi(0,"Desc",{Crs_Desc},{Crs_RowID})建立學(xué)生表表名DHC_Student,類名User.DHCStudent字段St_RowID,St_Code,St_Name,St_Sex_DR(Ct_Sex),St_Dob(Date)Global(MasterMap):^DHCSTUDENT({St_RowID})Index:^DHCSTUDENTi(0,"SEX",{St_Sex},{St_RowID})Index:^DHCSTUDENTi(0,"DOB",{St_Dob},{St_RowID})建學(xué)生科目表(學(xué)生子表)表名DHC_StudentCourse,類名User.DHCStudentCourse
字段
Sc_Crs_DR(DHC_Course),Sc_Score(Number),
Global(MasterMap):^DHCSTUDENT({DHC_Student.St_RowID},”C”,{Sc_Sub})Index:^DHCSTUDENTi(0,”Course”,{St_Crs_DR},{DHC_Student.St_RowID},{Sc_Sub})
存儲結(jié)構(gòu):Global名稱要求大寫,并和表的名字相同(去掉下劃線),每個屬性的存儲位置自己定義第五章CachéObjectScript1、Routine1.1、Routine介紹
我們可以把Routine理解為“小程序”或程序模塊。
CachéobjectScript對Routine的使用類似于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的存儲過程。
Macrocode(宏代碼),后綴名為.MAC。
Intermediatecode(中間代碼),后綴名為.INT。
Objectcode(對象代碼),后綴名為.OBJ。
Caché的
Routine是由一些代碼片段組成的。1.2、Routine的命名
Routine的名字可以是任何的字母數(shù)字式字符。但是有要求:一般不能以數(shù)字或百分號%開頭命名,和句號不能在開始或者結(jié)束的位置。以%百分號開頭命名的
Routine是不局限在某一個名字空間(Namespace)應(yīng)用的,%號它是
Caché系統(tǒng)內(nèi)部保留的,只是系統(tǒng)為我們提供的程序命名所使用。
此外,對
Routine名字的長度也沒有限制,但是只有前
31
個字符是用來對不同的
Routine加以區(qū)分的。
標(biāo)簽行:一個標(biāo)簽要確定一行,它從當(dāng)前行的第一個位置開始。
代碼行:代碼行的最前端至少要有一個空格,作為一行的開始部分。
注釋行:
// ; ;; /**/1.3、執(zhí)行Routine:
doLABEL1^ROU1 writeLABEL1^ROU1(arg1,)2、Class2.1、介紹
PackageClassNameClassTypePropertyMethodClassMethodQuery2.2、執(zhí)行類方法及Querydo##class(ClassName).ClassMethod(arg1,...)write##class(ClassName).ClassMethod(arg1,...)do##class(%ResultSet).RunQuery(ClassName,QueryName,arg1,arg2,….)3、CachéObjectScript基礎(chǔ)3.1、常用的特殊的變量動態(tài)類型:不用聲明變量弱類型:用法決定值這些特殊的變量有指定的含義,它們一般以$開頭。有個別特殊變量也同時支持縮寫$HOROLOG($H)$Horolog包含了時間和日期,它們由逗號分開。第一部分是日期的數(shù)字,它是從1840年12月31日開始計算日期的數(shù)字。第二部分是秒的數(shù)字,它是從午夜開始計算的。Global中的日期時間
都是以數(shù)字的形式存儲的。時間日期的函數(shù)$ZDate把$Horolog格式的日期值按照指定格式顯示。$ZDateH$ZDate的反函數(shù)。$ZDateTime把$Horolog格式的日期時間值按照指定格式顯示。$ZDateTimeH$ZDateTime的反函數(shù)。$ZTime把$Horolog格式的時間值按照指定格式顯示。$ZTimeH$ZTime的反函數(shù)。3.2、基本的運(yùn)算符1)算術(shù)運(yùn)算符+、-、*、/、\、#,**。其中,+、-、*、/是基本的4個算術(shù)運(yùn)算符。\整數(shù)的除法2+5*7=49,從左到右依次運(yùn)算2+(5*7)=372)算術(shù)比較運(yùn)算符<、>3)字符串比較運(yùn)算符=、[、]=比較運(yùn)算符是比較兩個字符串的相同與否。如果需要比較兩個數(shù)字是否一樣的話,需要在前面再加一個+號。例如,+number1=+number2。 [運(yùn)算符檢查右邊的串是不是包含了左邊的串]運(yùn)算符檢查左邊的串是不是在字典順序上跟著右邊的串;它是嚴(yán)格按照ASCII碼來操作的。例如:2]19,返回是1,因為2的ASCII值是50,而1的ASCII值是49。4)連接符_它是用來連接兩個字符串的 &與 !或
‘=非3.常見的命令
1)SET(S)
給一個或者多個變量賦值,縮寫SSetx=5,n(1)=4,dd=5 Set^FILE=3
2)MERGE(M)
拷貝變量樹。
Mergea=b Merge^a(1)=^G(1,2)
3)KILL
刪除所有變量或一些指定的變量或所有變量除了指定的變量。
4)NEW
初始化變量。
Newa,bNew(x1,x2)初始化除了x1,x2之外的變量4、程序流控制命令I(lǐng)f,Else,For,Quit,Do,Goto,BreakIf條件判斷語句。 ELSE(e)當(dāng)判斷條件不通過的時候,執(zhí)行后面的命令行。 FOR(f)循環(huán)命令 QUIT(q)結(jié)束執(zhí)行一個函數(shù)并返回一個值。 DO(d)執(zhí)行命令。 GOTO(g)跳轉(zhuǎn)命令。 BREAK(b)在調(diào)試的時候中斷一個routine的執(zhí)行。 WRITE(w)輸出信息到當(dāng)前設(shè)備上 READ(r)從當(dāng)前的設(shè)備讀信息OPEN(o)開啟一個設(shè)備以備使用。5、常用的函數(shù)
$Piece($P)
格式::$Piece(expression,delimiter[,from[,to]])
返回一個或者多個被分隔符分開的子串。
$Order($O)
格式:$Order(variable[,direction])
按照指定的方向返回一個變量的上一個或下一個索引
$get($g)
返回一個變量的值 如果變量存在則返回變量本身,不存在則返回空
$data($d)
判斷變量是否存在
(0,1,10,11含義)
$Extract($e)
格式:$Extract(expression,[,from[,to]])
說明:返回字符串的指定部分。
>Write$Extract("AABB",2,3) AB
$Justify($J)
格式:$Justify(expression,width[,desimal])
說明:返回一個右對齊的值,并可以改變它的格式。
$Length($L) 格式:$Length(expression[,delimiter]) 說明:返回一個字符串的長度,或者是被分隔符的子串的個數(shù) >Write$Length("ABCD") 4>Write$Length("AB/CD/EF","/")3
$zconert($zcvt)
>Write$TRANSLATE(str,"ABC...XYZ","abc...xyz")>Write$zcvt(str,”U”)>WRITE$ZCVT("<TAG>","O","HTML")6、事務(wù)
Tstart開始一個事務(wù) Tcommit提交事務(wù)Trollback保存失敗后回滾編寫簡單的m程序1、編寫類方法,保存表dhc_course的記錄2、編寫類方法,將dhc_course中的所有記錄在終端輸出3、編寫類方法,按代碼(crs_code)查詢dhc_course的記錄
練習(xí)1、新建類web.DHCStudent,包含對dhc_student表的增刪查改.2、新建類web.DHCStudentCourse,包含對dhc_studentcourse表的增刪查改終端調(diào)試命令1、當(dāng).mac文件中帶有sql語句時,需要在終端編譯程序
zn
“dhc-data“(或”meddata”)編譯m程序d^%urcomp,然后輸入要編譯的m名稱2、Mac文件調(diào)試dprocname^macname(參數(shù)1,參數(shù)2.。。。)q后面沒有返回值w$$function^macname(參數(shù)1,參數(shù)2.。。。)q后面有返回值3、類方法的調(diào)試d##class(web.classname).classmethod(參數(shù)1,參數(shù)2….)w##class(web.classname).classmethod(參數(shù)1,參數(shù)2….)4、Query的執(zhí)行D##class(%ResultSet).RunQuery(“類名稱”,”Qurey名稱”,”參數(shù)1”,”參數(shù)2”,…,”參數(shù)16”)第六章Caché
面向?qū)ο箝_發(fā)1、OOP的基本特征封裝繼承(泛化、聚合)多態(tài)(覆蓋、重載)Caché對象的特點
一個強(qiáng)大的對象模型包括繼承,屬性,方法,集合,關(guān)系,用戶定義的數(shù)據(jù)類型和流。
一個靈活的對象持久化機(jī)制
控制數(shù)據(jù)庫的持久化類的各個方面包括索引,約束和指向完整性。
一個易于使用的事務(wù)和并發(fā)模型
自動集成與Cache緩存的SQL通過統(tǒng)一數(shù)據(jù)架構(gòu)。
與Java、C++、ActiveX的交互性。
自動提供XML支持。
一個強(qiáng)大的協(xié)同開發(fā)環(huán)境:Studio。面向?qū)ο蟮臄?shù)據(jù)庫開發(fā)類和對象抽象與建模繼承和多態(tài)封裝可擴(kuò)展性對象持久對象綁定Caché對象模型支持以下功能Persistence:持久性對象可以被存儲在Caché數(shù)據(jù)庫或外部數(shù)據(jù)庫。同時解析存儲對象為關(guān)系表,可以使用標(biāo)準(zhǔn)的SQL查詢Properties:屬性簡單值、對象、嵌入對象、對象引用、數(shù)組、集合、流CustomDataTypes:自定義數(shù)據(jù)類型可以使用應(yīng)用程序自定義的數(shù)據(jù)類型Methods:方法類方法、實例方法Polymorphism:多態(tài)Inheritance:繼承Object的:OREF、OID和IDOREF一個對象引用,是一個值setobj=##class(test.Person).%New()OID一個對象標(biāo)識符,唯一標(biāo)識一個持久化對象。setobj=##class(test.Person).%Open(OID)ID一個值,唯一標(biāo)識一個特定的范圍內(nèi)特定的實例。setobj=##class(test.Person).%OpenId(ID)Caché的ClassTypeTransientObjectClasses臨時類,注冊類,inmemory類型:%RegisteredObjectPersistentObjectClasses持久類,inDB類型:%PersistentSerialObjectClasses序列化類,inmemory,orembeddedwithinapersistentobject%SerialObjectDataTypeClasses數(shù)據(jù)類型類,依附于某個對象。Caché的ClassType繼承與多重繼承繼承ClassUser.MyClassExtends%Persistent[ClassType=persistent]{}注意:對ClassType的要求,
在不同版本之間有差異多重繼承ClassXExtends(A,B,C){}屬性:所有父類的集合優(yōu)先級:后面的超類的屬性覆蓋前面的超類屬性關(guān)鍵字:來源于第一個超類Caché的類成員ClassName:唯一類名,包括所屬包。Property:屬性,類實例的數(shù)據(jù)集合。Method:類方法和實例方法。Query:查詢,輸出數(shù)據(jù)集。Index:索引的存儲結(jié)構(gòu),用于優(yōu)化頻繁訪問數(shù)據(jù)模式。ClassParameters:類參數(shù),自定義類通常需要使用的值。PropertyKeywordsCalculatedDescriptionFinalInitialExpressionPrivateRequiredTransientTypeAccessorsGet:writeobj.PropertyGet()Set:doobj.PropertySet(val)AttributeDataTypePropertiesObject-ValuedPropertiesCollectionPropertiesStreamPropertiesMultidimensionalpropertiesMethodArgumentsDefaultValuesByReferenceCallReturnValuesLanguageKeywordsClassMethodFinalSQLProcQueryDefinethequeryNewQueryWizardSQLQuery&User-WrittenQuery4partsofUser-WrittenQueryKeyWordsSQLProcSqlNameInvokethequerydo##class(%ResultSet).RunQuery("className","queryName",arg,...)DynamicSQLStorage%CacheStorage持久對象的默認(rèn)存儲模式,可以自動創(chuàng)建CacheStorage的關(guān)鍵點DataNodesDataLocationIdLocationIndexNodesIndexLocationStreamLocation%CacheSQLStorage一種特殊的存儲類,通常用于映射老結(jié)構(gòu)的global過SQLGateway存儲外部關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)Index索引的特點索引為持久化類提供一個優(yōu)化的實例檢索機(jī)制定義一個特定的排序與一類相關(guān)的常用請求的數(shù)據(jù)子集索引可以定義為一個或多個屬性的排序排序規(guī)則EXACTSQLSTRINGSQLUPPERALPHAUPMINUSPLUSSPACESTRINGUPPERRelationShipRelationShip的特點只有持久類能定義RelationShipRelationShip是雙向的,在兩個類中都要定義兩種類型:1-n;父子自動保證數(shù)據(jù)完整性RelationShip解析為關(guān)系表中的外鍵父子關(guān)系的定義定義方法存儲使用Caché對象-1ExcuteMethodDooref.MethodName(arglist)Setvalue=oref.MethodName(arglist)ExcuteClassMethodDo##class(Classname).MethodName(arglist)Setvalue=##class(Classname).MethodName(arglist)NewObject:Setoref=##class(Classname).%New()OpenObjectSetoref=##class(Classname).%OpenId(id)Setoref=##class(Classname).%Open(oid)GetPropertySetvalue=oref.PropertyNameSetvalue=oref.PropertyName.GetAt(n)//ListpropertySetvalue=oref.PropertyNameGetAt(key)//Arrayproperty使用Caché對象-2ModifyPropertiesSetoref.PropertyName=value//Setcar.Owner=personSetoref.PropertyName.RefPropertyName=valueModifyListPropertiesDooref.PropertyName.Insert(data)//Doperson.FavoriteColors.Insert("yellow")Dooref.PropertyName.SetAt(data,n)//Doperson.FavoriteColors.SetAt("yellow",2)Dooref.PropertyName.InsertAt(data,n)//Doperson.FavoriteColors.InsertAt("yellow",2)Dooref.PropertyName.InsertObject(itemoid)////whenpropertyisListObjectsModfiyingArrayPropertiesDooref.PropertyName.SetAt(data,key)//Dopalette.Colors.SetAt("255,0,0","red")Dooref.PropertyName.SetObjectAt(ElementOid,key)//propertyisArrayofObjectsModifyingStreamPropertiesDooref.PropertyName.Write(data)DeletingObjectsDo##class(Classname).%DeleteId(id)DeletingObjectsRebuildIndexdo##class(Classname).%BuildIndices()使用Caché對象-3SaveObjectDooref.%Save()Setsc=oref.%Save()TStart//...Setsc=oref.%Save()If$$$ISERR(sc){///If($$$ISOK(sc)) TRollBackDo$System.Status.DisplayError(sc)}else{ TCommit Setid=oref.%Id()}練習(xí)了解Caché的面向?qū)ο笾R。閱讀UsingCachéObjects對dhc_course,dhc_student,dhc_studentcourse表實現(xiàn)對象方式的增刪改編寫query1.dhc_course,query入?yún)?課程代碼
2.dhc_student,query入?yún)?學(xué)生工號
3.dhc_studentcourse,query入?yún)?課程表RowID,學(xué)生表RowId,出參所有列通過繼承%XML.Adaptor類,把對象轉(zhuǎn)成xml,并使用%File類把xml串寫到類名.xml中熟悉持久類的定義屬性索引存儲結(jié)構(gòu)和索引的global結(jié)構(gòu)classmethod、query
練習(xí)了解Caché的面向?qū)ο笾R。閱讀UsingCachéObjects對dhc_course,dhc_student,dhc_studentcourse表實現(xiàn)對象方式的增刪改編寫query1.dhc_course,query入?yún)?課程代碼
2.dhc_student,query入?yún)?學(xué)生工號
3.dhc_studentcourse,query入?yún)?課程表RowID,學(xué)生表RowID熟悉持久類的定義屬性索引存儲結(jié)構(gòu)和索引的global結(jié)構(gòu)classmethod、query
66組件開發(fā)培訓(xùn)第一章html,css,javascript基礎(chǔ)第二章組件開發(fā)過程
HTML(HyperTextMarkuplanguage)
超文本標(biāo)記語言超文本就是指頁面內(nèi)可以包含圖片、鏈接,甚至音樂、程序等非文字元素。超文本標(biāo)記語言的結(jié)構(gòu)包括“頭”部分(外語:Head)、和“主體”部分(外語:Body),其中“頭”部提供關(guān)于網(wǎng)頁的信息,“主體”部分提供網(wǎng)頁的具體內(nèi)容。CSS(CascadingStyleSheets)
層疊樣式表css是一種用來表現(xiàn)HTML(標(biāo)準(zhǔn)通用標(biāo)記語言的一個應(yīng)用)或XML(標(biāo)準(zhǔn)通用標(biāo)記語言的一個子集)等文件樣式的計算機(jī)語言.css選擇器
.class#idtypeinputpbuttondivtdtable比如我要選中一table行時變樣式,怎么辦?javascript功能
提供數(shù)據(jù)驗證
實現(xiàn)多頁動作2.組成部分核心(ECMAScript)文檔對象模型(DocumentObjectModel,簡稱DOM)
瀏覽器對象模型(BrowserObjectModel,簡稱BOM)3.基本命令
核心(javascript對象)
關(guān)鍵字:var,if,else,for,while,<,>,!,!=,==,===,!==&&,||,&,|,?=.
全局屬性:undefined,Infinity
全局函數(shù):isNaN,eval,getClass,decodeURI,encodeURI,isFinite,parseInt,parseFloat,unescape,escape
String對象:indexOf,lastIndexOf,match,replace,split,
search,toUpperCase,toLowerCaseArray對象:join,slice,sort,splice,pop.push,concat,reverse
Date對象:getTime,getYear,getMonth,getDate,UTC
Math對象:abs,cos,sin,max,min,floor,ceil,random,sqrt
Number對象:toFixed
RegExp對象:compile,exec,test
Boolean對象BOM(瀏覽器對象模型)Window對象
alert,
confirm,prompt,close,blur,focus,open,print,setInterval,setTimeoutNavigator對象的屬性
appVersion,userAgent
Screen對象的屬性
height,width,availHeight,availWidth
History對象
back,forward,go,history.back()Location對象,
包含有關(guān)當(dāng)前URL的信息。
Location對象是Window對象的一個部分,可通過window.location屬性來訪問。
reload,replace,assignDOM(文檔對象模型)
Documents對象
文檔對象,描述當(dāng)前窗口或指定窗口對象的文檔。它包含了文檔從<head>到</body>的內(nèi)容。
方法:getElementById,getElementsByName,getElementByTagName,close,open,write,writeln
屬性
:body
對象集合:all,forms,links,images,anchorsElement對象
tagName,styel,length,textContent,className,getAttribute,hasAttribute,valueAttribute對象
屬性:isId,name,value,length
方法:item,removeNamedItem,setNameItemEvent對象
onkeydow,onkeyup,onkeypress,onmousedown,onmousemove,onmouseout,onmouseover
initEvnet,preventDefault(通知瀏覽器不要執(zhí)行與事件關(guān)聯(lián)的默認(rèn)動作),stopPropagation(不再派發(fā)事件)我們在使用object.onXXX=handler是需要保證object已經(jīng)在頁面中生成。比如我們?yōu)閐ocument.body賦予事件處理函數(shù),我們必須保證document.body已經(jīng)存在,就是說我們不能在<body>之前在的全局語句中使用document.body;
handler必須是函數(shù)名
W3C.addEventListener(type,listener,useCapture)/removeEventListenertarget.addEvnetListener(“keydown”,function(){},false);IE.attachEvent(type,listener)/detachEventtarget.attachEvent(“onkeydown”,function(){})這三者都是前語言,CSP?
Request,sessionCSP(cacheservepage)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 乒乓球館前臺合同范本
- 綠色食品質(zhì)量安全控制模擬題(含參考答案)
- 人教版部編版小學(xué)語文一年級上冊古詩畫中描寫的景象教學(xué)設(shè)計教案
- 前臺年度個人工作總結(jié)
- 特殊環(huán)境戰(zhàn)傷的急救護(hù)理
- 三上品德交通安全用語
- 四川省內(nèi)江市2024-2025學(xué)年高一上學(xué)期期末數(shù)學(xué)試題(解析版)
- 廣東省仲元中學(xué)、龍城高級中學(xué)2024-2025學(xué)年高二上學(xué)期期末聯(lián)考數(shù)學(xué)試題(解析版)
- 電工實訓(xùn) 理論期末考試試卷三及答案
- 美甲工藝知識培訓(xùn)課件
- 酒店室內(nèi)裝修工程施工組織設(shè)計
- 神經(jīng)病學(xué)專業(yè)英語詞匯
- 2024年高級纖維檢驗員職業(yè)鑒定理論考試題庫(含答案)
- 心肺復(fù)蘇科普課件
- 員工食堂就餐統(tǒng)計表
- 2024至2030年中國醫(yī)療保險行業(yè)市場深度分析及投資戰(zhàn)略規(guī)劃報告
- 小數(shù)除法100道豎式計算題及答案
- 《婦幼保健學(xué)》課件-第三章 兒童期保健
- 2025數(shù)學(xué)步步高大一輪復(fù)習(xí)講義人教A版復(fù)習(xí)講義含答案
- 日常英語口語900句大全-常用英語口語基本對話
- 游戲策劃方案
評論
0/150
提交評論