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