Caché數(shù)據(jù)庫開發(fā)培訓(xùn)教程_第1頁
Caché數(shù)據(jù)庫開發(fā)培訓(xùn)教程_第2頁
Caché數(shù)據(jù)庫開發(fā)培訓(xùn)教程_第3頁
Caché數(shù)據(jù)庫開發(fā)培訓(xùn)教程_第4頁
Caché數(shù)據(jù)庫開發(fā)培訓(xùn)教程_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論