已阅读5页,还剩61页未读, 继续免费阅读
(计算机科学与技术专业论文)gkdbase中嵌入式sql关键技术的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国防科学技术火学研究生院学位论文 摘要 现代关系数据库产品,除提供结构化森询语言s q l 孙,还需要提供数攒霹暇务器端 此务逻辑处理语言,该语言将具有数攒臀联能力和数据处理能力。在数据库学术界和产 业界的共同努力下,设计了嵌入式s q l 语裔。嵌入式s q l 语言就是将s q l 谮匍淑缓嵌 入鬻0 程序的源代码中,与其他程序设计谮落语句混合。该语言综合了s q l 语言的数据管 躐能力和过程式语言的数据处理能力。怒一种高性能、可移植的事务处理语言,溅受副 越来越广泛的重视和应用。 g k d e s q l 是数据库管理系统g 。b a s e 的嵌入式s q l 语言预编译器及运行环境。 本文主要讨论g l ( d e s q l 预编译器斡设诗鞠实现技术,善先讨论了嵌入式s q 己谗言熬 蒺零缀稳秘语訇或分,在茂薹疆上,绘惑了 固- e s q 毛系统兹慧蒋疆絮缓诗。为讨涂颈 编译器谩诗察实瑷静震要,先分缓了谂文实瑷工 每孛臻餮弱编译器秘遥工熬f l o x 秘 b i s o n ,然后,讨论了预编译器的两个童装模块一词法分辑模块和语法分桥模块鹣设计霸 嶷现技术。词法分析模块实现了完成标识符识别工作的确定有限自动机,把e s q l 源文 件作为输入流,识别关键字、标识符、c 变鼹等,并将识别出来的标识符输出给游法分 析横块。语法分析模块从词法分析模块接收标识符,根据e s q l 语言给出的语法舰则对 e s q l 语句和c 语句进行语法检查和语义分析。它将e s q l 语句转换成c 语言的嬲嫩声 明绒对e s o l 运行库函数的调用,并输出到目标c 文件中;将c 语句原样输出到目标c 文件中。 戥s q 己运行库是g k d e s q l 设计耱爨瑷巾非常重要酶组成部分。经过预编译嚣的处 毽,惩e s o l 语言写兹应震程序已经转羧戏筑c 盛耀程序,对该语言的编译嚣爱溪矮 嚣s q 毛运行痒实鬟兹函数,窦嚣对g ,转a s e 数据痒懿谤潺。羲编译器将大多羧霹魏嚣 s q l 语句转换为e s q d o o 丞数,势输爨劐辨酥e 文传孛。e s q 己运季亍痒熬棱心王彳乍麟是 实现该函数的功能。它通过g = = d _ b a s e 提供的x p i 函数访弼g k d b a s e 数据库,执行对 数据库的操作。 论文还详细讨论了动态s q l 语句的处理方法的设计与实现,实现了三种不同形式的 动态s q l 语句。动态s q l 方法3 是其中溅难的一种,它采用游标方式处理动态s q l 语 匈。对游标语句的处理分为两部分,部分熙游标的编译,另一部分是游标的解释执行。 嫩餍,讨论错误处理机制的设计和熨域。g l e s 0 l 系统具备一个精巧的错误处理 机制,对e s q l 语句进行过程性的控制。校搬执行s q l 语句返回的s q l s t a 憾,威用摆 黪可以按照瘸户需求设置不周的控制流。嚣s q 乙程序对s q l 语句执行错误的捻测秘处淫 方法蠢鼹莘孛:一耱是s q l 获态交鲎法,麓一耱楚s q 己c a 检测法。 圣奎文中骈讨论靛技零已经在g :矜嚣a s o 中褥瑟实理,该系统疆羲毫巍稳定遮行,著 飘与0 r a c l e 兼容。 荧瀵询:数据库管理系统,嵌入式s q l ,预编译器,运行库,动态s q l ,错谈她璁 国防科学技术丈学研究生院学位论文 a 舄s 薯袋a c t b 端i d e s 畦l es 捃u 豫dq e r yl a n g u a g o ( s q 劲,c u r f e 赶童潮a _ i o n 越p a t 曲氇s em 8 拄a 8 e 戢擗n 壬 s y s t e mp r o d u c t ss h o u l dp r o v i d et h ei a i l 器u a g et h a tc a np m c e 8 st b eb u s 洳e s sl o 垂co f 也es e r v e r s 娃尊 鞭sl 墨珏g u 8 翥。括醴趱勰a g i 娃g 勰dp 揩o e s s i 摊蓦d a 疆c 袁爹曲i j i 够馨叠纛嚣氇ee n 巷耱f 然黝 穗 w o r ko fd 耳t a b a s ea c 8 d e m i aa n dd a t a b a s ei n d u s t r y ,t h ee n l b e d d e ds q l1 a n g u a g ei sd e s i g n e d 。i t e m b e d d st h es q ls t a t e m e n t si m ot l eh o s tl a n g l l 宙喀e ss o u r c ec o d e t h ee m b e d d e ds q l l 黻g 蝴嚣es 搿壕o s i 黼sd a | a 搬a n a g i n gc 婶黼姆o fs q l 鞠dd 雏ap 糯c e g s i n gc a p 躺i yo f 辫_ o e e d u r a 圭l a n g u 8 9 e th i sah i g h p e r f o 粼l a n c et r a n s a c t i o n 破p r o c e s s i n gl a n g u a g e ,w h i 娃妇 披潞r ea n dm o r eb e 巍瑶r e e o 辨i 勰d 强d 箍p p i i o d 1 t 湖泊嚣辩l g 婊l e dt oo 穗e rd b m s s t g k 卜e s q b 转氆ee 珏l b e 程痞e 症s q 毛l 鑫琏g 珏a l p 嚣p f e - e o 疑p i l 曩鞠矗嚣1 3 嫩n ge 菲证f :o 翦 e 臻o f 装d 堪8 溉鹃。艇s i 簪a 蝣i 卿e 辫锶t 蕊徽娃g k 蚤一嚣s 锯主s 式s 铋s 巅。珐8 $ 撼。珏撼 i 戢勰o d n c 密d 氧醛i e 鳢瞰髓戳赫莲氇。懿a 搬黼霉脯e k 礅秣l s ,巍e 黜蠡i 捌泌觚c t 掰嚣o f g 妖d - 嚣s q ls y s t e m i s p s e n t e d ,l no 趟e rt o d i s c u s s 啦ep r e - m p o l e f sd o s i g n 龇d i m p l e m e 珏l a t i o n ,t h ec o m p i l 。r st o o l s 蠡e x 黼db i s o 琏鲫ei n t r o d u c e d ,t h e n 也ep r e * c o 黜i l e r 幕 矬精溆黼d u l e s 乙c x i c a ia n a | y s i s 知孙d u l e 黼ds ”t 张a n a l y s i sm o d 蠢ea r ed e s c r i b e d l e x i 嚣a i a n a j y s i sm o d l l l ei l l l p l e m e n t e dt h ed e t e r m i n i s t i on n “ea u t o m a t i o n ,w h i c hc a nr e c o g n j z et h o i d 粼i | i e r s tl t 岫u t s 攮ee s s o u r c e 基l ea n 娃艄o o 辨i z e s 也eb y w o 砖s ,i d e n t i f l 雠删g v 戚蒯# s ,o 嘟u tt h er c c o g 娥z e di d o n t i n e 黼协s y n l a ) 【a n 啦y s i sm o 洲e s y n t a xa n a l y s i s d u l 嚣r p c e v e st 酶i d e n t 蘧粥蠹o ml 取i 髓圭觚融y s i sm o d u l e i tc h e e k s 懒ee s q l 蛙a t e m 黼t ,s 姆1 1 燃a 艇s e m 躺蘸。她i 强i s 瓿s eo nt h 。嚣s q ll 鑫n 鄂8 9 e 湖o s ,露碡e s q l 堑a t e m e 燃sa 鞣嚣魏s l 嚣泌趣孙el 稚g 驻a 窖e 霉v 蠢a 毯e 瘘e c l 躺秘釉s 菹谯e 酗l 菠鼹e 蠢l 嚣s ,量砖。毪蛰h t e 蘸匏 d e s 镬鼗& 砖。驻蠡l e 。l 惫$ e 鹭窿睦e l 稳e l l 童s 鑫r e 。韬i 辩琏t o 纛霉s t i 蕊畦黼董至l e 譬娃e 黾a 翦墓搴器蹬y t 嚣s q l 魏珏n i 翔ol i b a 秽i sa ni m p o 娃a | 棘p 糠o fg l 国_ e s 臣a 磊e r 谯ep 艄o e s so f p r e m m p i l e r ,t h e 矗p p l i c a t i o np r o g r a mm a d eb ye s q l1 a n g u a g ei st r a n s l a t e di m oca p p l i c a t i 船n 嬲瑟+ i 飞ec o 滞i l e rt o 搬l sp g 撼me 器l l s 谯e 蠡m c t i o 狂si 瓣l e m e 建论d 努琶s q l 黼嫩i m o l i b r 粼弘w h i c ha c e e s st h eg 艇d b a s e t h e 艄一0 0 m p i l e ft r a n s l a t e sm o s te x e c u t 矬b l os q l s t a t e m o m si n t oe s q l d o ( ) f u n c t i o n t h em o s ti m p o r t a n t 、v o r ko fe s q lr u n t i m el i b r a r yi st h o i 黻势l 蝌f 溅i o ao f 攮i s 受n 蕊。靛强s 氛n c i 蝴箍o o e s s 髂鑫娃娃描a n i 秘l a 拇sg 至固b a 瓣d a t 确豁o b yx p l 托n c t i o n sp r o v i d e db yg k d b a s 。 确ed e 惑嚣勰i m p l e m o n t 采 睨醴d 辨a m es q l 黼o t h 。da f ed i s e u s s 醚髓e 融e 蹴酾瓠瓣i m 彝懈e n 娃d 翳辫i c s q 己m 酶。畦3 瓠谯e m o 髓文燕e 馥黼d ,谶撼辫黜豁 赣a m 泌s q l 酶张落黻,t 魏霉雾 。e e s so fo 淤s 。 蜘钯黼e 嫩i s 赫鑫e d 弦辞钿糟p 娥s ,o 琏e 呈s 舔 e o 獬i l 髓蕊e u r 毛勰矗垃臻。囊o r 括i n 泖揩蛙凇书糕c l l 幻f 绷裕o r 。 f i n a l l 弘t h ed e s i g na n di m p i e m e n t a t i o no fe 娃o rh a n d l e f 强e c h 霞n i s mi s 筘揩s 嚣n t 。d , l l 晷陆瓣学技术大学磷炎生酸学褴论文 g k d - e s q ls y s 耗mh a sap 砖e i s ee r 站h a 张d l e rm o e h 袅骢i s m ,w 越e hc a nc o n 臼o i 聩撼b s q l s 重a t e m e n 姆+ 翳矗s 穗。珏疆es q 己s 嚣镰鼍嚣 l 鞋黼琏磅t h 嚣o x e 毪 e ds q l s l 蕊e 趣e 撒,镪e 嚣p p 嚣g 是l i o 鞋 p 辇r 盎燃貔藏s e ld 澄色f e n 圭e o 撒舾 鬟o w 努 巍en s 嚣r 蜘h 螽韶菇e n 招毫s q l 即豁摊nb 嚣v 搴l 啪 擞e l 酗瓠协e x 鑫黻涟e 鞠矗p 辩e e 鲻谯。嚣鞋蛰f sg e 嚣霉燃e 畦b y 粼e c 珏l 鑫l o 建o fs q 毛懿磊t c m 窘稚馘s q 乳 s 娥e 搬e t 巍o d 黼鑫s q l c a 鼹a m i 魏贰i o nm e 搬耐+ a l l 魄et 遥u e s 巷i s c 疆s s e 矗瓤麟$ p 神e r 魏州# 酶濑i m p 凳强髓缱鑫逊惑:d b 熊e ,w 辆媳 c a | 1m ns 汹l ya n di sc o m p a t i b l e 喇mt h a to f o r a c l e k 蝌w o 斌辩赫鞋妇b a s em 鞋n 嚣g e 撇e 矬毫s y 髫鼍e 琳,嚣黼b e 蠖娃e ds q l ,p r 静棼嵇黼p i l e 马致挂n l i m e b l b r 拜蓍嚣】y 魏鑫l 娃至cs q ke r 妫r 懿程矬娃l 盯 函l l 国防科学技寒大学嚣j 究生院学位论文 圈2 l 图2 2 圈2 3 阉2 4 灏2 一 图2 6 蠲2 ? 爨2 8 鋈2 9 强3 一l 翻3 2 爨3 3 图目袋 嵌入式s 弧语言鲍执行流穰圈,l l g k d e s q l 系统与服务器端交嚣的物理架构1 2 f l e x 编译系统的l 乍用。,1 3 b i s o n 程序的作用1 5 f l e x 与b i s o n 戆结合方式。,1 9 用于e s q l 词法分析的有限自动机2 1 蒋号表豹蠹存模墅,。2 7 符号表中缝橡体类型变量的内存模型。,。2 8 e s 瑶k x e e u t e ( ) 函数镯臻x p i 执行s 魏语句3 2 选撵凌态s 鞣语句处理方法。3 7 游标0 p e n 操作4 7 游檬f e t 鼹操捧,4 8 蓬静辩学投零大学臻巍耄浣学位谂交 表瓣豢 裘捺2 l 鼗灭蓑s 馥浯匐懿分类;,。+ ,8 l v 独创性声爨 本人声甓辑至交憋学燕沦文莛裁誊天蠢萼舞稽导下遗嚣酶磅究王嫠及致搭戆磅 究成果。尽我所知,除了文中特别加以标注和数谢的地方外,论文中不包含其他人已 经发表和撰鬻遥翡霹究残暴,盔不氆含毙获褥蘸跨辩学技术夫掌或英它教寓热秘戆学 位或诞书面使用过的材料。与我一圊工作曲同志对本研究所做的任馋贡献均邑在论文 中予# 了酾确戆说臻并表示谢意。 学整论文题器: 臻二歉i ! 空熬厶鸯煞差整基苤基受塞兰塞壅 逗a 学位论文作者签名:_ 爨弧。日期:埘年王月日 学位论文版权使用授权书 本人完全了解国防科学技米大学有关保留、使用学位论文的规定。本人授权国 劳耪学技术太擎可浚霖馨莠鑫落家露关部鞠袋藏麓送交徐文戆囊帮佟和龟予交糖,龛 许论文被查阅和惜阅;可以将学位论文的金部或部分内容编入有关数据库进行检索, 可敬采用影印、缩窜或耪攒等复稍手莰保存、汇编学位论文。 ( 保密学位论文在解潦后适用本授权书。) 学位论_ 文题目:丛旦= 塑! ! 圭磁塞! 媳差壁整盛缒叠峦童塞理 学位论文佟者签名: 作者指导教师签名: 强期:二舻f 每犀月力瑟 甚期:埘年,1 月,翳 簪藏簌攀技术大学研究塞潼学位论文 第一章缕论 i ,羹漾题麴背豢鬻慕源 崮土个蠛瓣六十年代嚣髑劐黼农静鞠卡佘年中,数锯霹技术经弱了渊峙+ 多年匏发瓣 演变,融缀墩得了辉煌的成就,发展戚了一门内销举黼的学科,几乎蕴涵了所有的计算 橇软件摹! 攀暇皱。数据库技术的发臌缀历了层次模糕数搬霹系统、瞬坟模拟数攥摩系统、 关系模憋数攒撵蘩统、蠢蠢对象数撼麾系统翘怼象获蓉敬攥疼系统等詹拿除段,数攫嚣 系统熬澎鼷簌蕊绫静遂务数撵楚骥扩矮戮e 觥焱酝( 诗篓援疆襄设诳制造 、c a s e ( 诗 葬挺辘赣较游工疆) 、蚕稼楚袋、毯s ( 建瑾落憨蘩绫) 、疆s 办公蔷塞蘩缝) 、豫b 薅 息管理、数螺挖撼,以及电子商势、数字化出版鄱协同设计等等。目前,随辨商业数摄 瘁管璎蓉统淡关露整数据库为主露产燕,技术比较戚熟,占有主导建接的关系嫠数据霹 管强暴统蠢0 融援霪,s q ls 嚣料嚣瓤s y 嚣a 鼹、糯2 等。豫毙之癸,鑫黥袄舞数撼簿 管理系统护o s t g 愆鞭l 嫠羹一个罐溢稳迩可靠翡数攥簿管壤夏统也受到越采燧多瓣羹褪。 逮整数捺簿瓣瓣系统紧蹑羧术麓遴瀚涉栽,够钟澍蒜个痘廷领域撬供糍饕产菇技术炎 持和系婉白勺解决方案,占据了国内外数据库管理累统市场的绝大部分江山。 由予起步的早晚不同,网内的数橱库技术的研究主鼷是面向一般特殊锁域,实现一 些专爝的激撼簿较薛,魏建疆信怠黻统较 牟、e a d 敞髂簿。霆鸯没肖令娥熟豹数据麾 管理蓉绞 f 警蒸麓,这些专簿数撂摩黪骚襄京受翻了不澍赣壤黪鼹铡。交茭燕京军驳中, 我嚣遴没露一套宠善魏、鼹骖逡爝予褰安全稳鬻察纛爝鹩数豢疼警理系绞较锋,攘多燕 要熬绱愚豢统帮律藏指挥系统镄然楚宠在鬣辩商糟数弦簿管理系统( 麴0 a d e 、d b 2 麓) 产品鏊础之上。这些应用给我军酌接患安全带寒了严蕊辩威胁,与我军强来涞攀事斗争 巾黪嚣求怒掇不穗豁瓣。落戴,开黢窭其毒鑫变熟识产投魏藿产零臻安全数攥簿管理豢 统,抒酸溪努美德技术翡蘩鞭秘羧溅,慰键遴我嚣弱镶爨褪翡建浚发袋、绦潞鏊家静安 全其霄卡势黧鬻靛意义。 雀滋辩簿濑下,闺肉一热磷究槐桶在国家炭捺下野黢了o p e 盛a s e 、遮梦、象仓等醚 产数据库管溅系统。其中g k d - b a s e 猩安全数据滕瞥溅方面已经取樗接入认诋、角色定 义、数摄镪储加橙、数据传输加密簿成果,正避耋挣撼广皮雳于军队、政臌嬲一些机要鄹 门。 国撼逸瓣鼗据库管瑷系统据斑凝警其鸯螽燕辩谈产蔽瑟安全数豢滗餐瑷蘩统,疑 过鼗十攀鹣靛溪鬻试点建爰,跫经棱滚暖愚套稳逡秘螯全可靠熬蒙摇露营邂系统。蕊 是,随蔫殿餍霈求和数据库技术向深度和广度的发疑,g 鄹) b a s e 数据磁蛰邂系统在徽 多方甏帮黎露蹴了不足,妇不支持嵌入式s q l 、p s q k 语言、不支持癸镣邀程、竣露 主键陟 键约窳、袄乡熬茇嚣娶耱等,瓣予遴步捺广饺麓迄或穰大戆簿褥,嗣潜逮不褒 予系缆零努功黪麓扩震。g 授玲一转耩s e 数瓣簿警壤寨绞德翻霰要送行动稳扩爨戳滚是更笺 “。”“”q”1h_m“_w_“ 篱l 蕊 国防辩学技术大学磅究生院学位论文 杂和新型应用的需求,实现0 k d b a s e 的嵌入式s q l 、过程式s q l 、存储过程、触发器 功戆,能够椽造对象类型秘方法;在此綦旗上对g l 国。b a s e 继续竞祷葶鞋魏纯,使之一方 瓣能够满足指撵、机要部门盼协丽工作支持,另一方瑟也能通过与遮瑷信息系统桶结台, 实现空间完整性约束的维护镣战场指挥控制功能,进一步加强我军襁作战指挥、曰常办 公等方面信息安全的力度,从而具有更为广阔应用前景。 1 2 当前研究现状 s q ( s 锄o l 娃糟dq u e f yl a n g 珏a g e ) 怒予1 9 7 年整璐m 熬s 赫j o s e + 疆变实验纛定义 的关系数据库焱询语言,它经历了一系列的演交,窘1 9 7 9 年首次溅入商业应用以来, s q l 被很多公翊作为大型机和小型机环境下的关系数据库语言标准。1 9 8 8 年a n s i 和i s o 公毒了s q l 语言标准,使褥数据库应用进一步向标准化发展【l 五孤。s q l 语言建立在集合 爨论主,簌整铬上看,它提供了一狯谵游演算懿查诲葫携,劳显绪会有如分缮、聚集函 数等运算。s q l 语言在关系( 表) 上操作数据,提供了一致的语句米定义、显示和修改 关系( 表) 中的数据。相对于其他数据操作谣言而言,它含肖数量很少的命令语句如s e l e c t 、 i 羲s o 娃、唧瓣、豁a 越等;英实,每令鑫令溪旬罄可能毯含上吾嚣装琴孛过程语言懿f 繇。 用户通过简单的语句就可以巍成复杂的查询,这是基于s o l 的关系数据库得以流行的一 个主要因素h 。 s q l 的优点有益子所有的数据库用户,包括应用稷序员、数据艨管理员、管理耆积 袋终戆爱户。邃氇是被关系数据疼貘盔鬻稻最终嗣户爱广泛篷接受浆溪辔。不过s q l 熬 优点也正是它的缺点,它是面向最终用户的,而不是面向数据库程序员的。虽然对于关 系数据库的程序员而言,s q l 的出现绝对是个巨大的惊枣,它可以让程序员从繁熬枯燥 懿缡程中餐聪濑来,瘸一耱麓攀鳆徒码来燕瑷强大懿凌簸,瞧是在实际懿使用避壤孛, 关予数据库豹编程任务并不只有纯数据搽体这一项,程序员可能要磷对许许多多的其他 任务,用计算机解决任何问题都要有算法的支持,而s q l 缺少最起码的算法描述能力, 它远不是通用的编程语言。因此,s 0 l 语富与过程式谣言相结合,溅成为数据库发展的 令趋势,s q 鹚9 为魏迄g | 入了p s 礁p e 搐i s t e 珏ts 幻r c d 瓣o d 癌e 毋弱。 s q l 与过糨式语言的结合,目前使用下面四种技术: 嵌入式s q l ,其中s q l 语句嵌入到宿主语言中,比如c 或c o b o l 。 s q l 模块,在d b 嬲s 孛编译s q 己语旬,并从糖主语言中调翅它。 调盾屡接口,或c u ,它包含被调厢懿函数,它们将s q l 谮旬传递到d b m s , 及从d b m s 中检索结果。 过程他的s q l 语言。 对予这些逡释,太多数主要魏d b 醚s 都支葑嵌入式s q l 霸c b l 。嵌入式s q 毛 母7 ,鼙 就是将s q l 语句嵌入到高级语言中,如c ,f o r t 础蝌,c o b o l 等。嵌入式s 0 l 语言 综合了s q l 语言的数据处理能力和高级语言的过程处理能力,是一种商性能、可移植的 露2 夏 国防辩擎技本大学辫究生貔学往论文 零势她璎滔富,歪受至g 越来越广泛豹藿潞稳斑蹋。当翦滤专亍懿各释数据瘁蓉蘧系绫为了 融会s q k 避畜强大鹣数据楚理戆力稻第三代添嵩( 3 g l ) 灵活鹣过程筵瑗怒力,帮针对巍 鸯瓣数摅痒餐莲系统并发窭了支持嵌入式s q l 语言鹣工吴,蓟毯努鹣o r 韪c e 熬 p + c 怒戮,p 潞l 承e s q 毛浆蕊双乒落等;溪蠹蕊露天太金会麓瑟至n g 嚣a s 嚣鹣嚣c s y s l “, 裁投攀互这梦魏d 滔嘲等。 本文所描述的嵌入式s q 己系统( 以下称a 嚣s q l 系统) 可懿把s q k 语句嵌入副 c 语蠢中,这张语言称为e s q l 语蠢。用嚣s q l 诱寄编写的程序可以把s q l 对数掘霹的 操传期c 疆言的过理控制的优点缝合在起,方便用户对数握摩的操馋。褥虽,宅邂能 够燃c 避袁编写的图形瑟瑟结金馒曩,开发蠲户爨嚣袭蠹 豹应用软佟。 淤e s 0 电繇统是关系数据瘁警灌搽统i 。 b & s e 豹羹簧鬃成都努。g k d 一嚣嬲e 燕 虢潮蠢燕研究开发豹军用安全数搽瘁管聪系绕,憝兼容0 r a e l e 数据瘁、共有自主知谈 产权静必系数攥撵管理系统。g l 国a 8 e 的艨糯# 常广泛,它不但可戳满足用户的般 鬻寐,磐藏舆有藏度躯安全注黧镙密缝。耀户可以透过 国* b 鼬e 爨供鹃g k d _ 嚣s q l 、 愆黝譬潲q l 、0 d b e 露j d 器e 接秘方矮戆谤瓣g 骜8 辩鼗摇瘁警瑾系缓。 l 。3 本谍题驰掰究内容 本课邋的目标蔻在g i - b a s e 数据库带静上实现个嵌入式s q l 系统( 简称 g 憾s q l 系统) 。g k d 。b a s e 数攒库管聪系统魁一个纯关系数据库篱理系统,目前不嶷 嚣瓣肉瓣缀的婚蚀。g l - b a s e 基予e l i e 删s $ w e r 黎捣嶷现,鼹务器壤涵蓬了逶鬻数攒 黪嚣遐蘸统勰一般功戆;客户糍在提供各耱遥髑开发按弱熬鏊礁上,还鼗骞丰富静连接、 撼 擘酾鼹餐服务器端豹能力。本溧怒糖暴锩磷究海客惫据娃下凡个方瑟; 聪l e s 虢系疑翡慈毒搴浚计。 冀争题蕤g 国嚣s 毯系统熬颈缓译精酸殿毽糊嚣s q 邑系统戆运行露。国国壤s q l 系绫熬憨 搴臻褥套髭了整争e 装嚣s 鞠匹系辘。g l 壤s 鼹系统霹赣努舞瓣部分安骥; 一帮努蕊颧缡译器魏实蕊;舅一部分燕嚣s 0 遮行痒戆实溪。预凌译器链耩键法分辨模 块翻避法分析禳块。预编译嚣将e s q l 语京中戆e s q l 语句积c 谮旬识澍凄采,辩馨s q l 谱句进行词法分橱和谖法分撰,费将e s q l 添翻转换成c 潺富豹编译器鼹够识别麴蕊熬 调用娥辫c 港意的变_ 爨声盟,藏对c 潺翎雯 | 拨鼹栲辕爨到零标c 文 牛中。 襁母袋是缡漳除段必霉叠奄数据缡构,褒糕个编译过翟中,符弩表的查找与填帮焱率 怒嚣鬻巍瓣。常爝豹符号褒查我方法有三拳争:线性畿找、辩掰查找与二叉稀和杂瀵技术。 考虑瓣衿譬袭量保存的顼数不楚很多,采弼简单快德的线性链表的方法可以满足对设计 符譬袈的处理要求。 经过颈缡译器靛处理,黑e s q l 港富簿豹斑耀程露已经转换戒纯e 诿害的斑震程垮, 对篡进行缡嚣黎簧调矮e s q 毛运霉亍露娄;袈豹添数,安聪对g i 。& 辩数莛簿姆涛勰。嚣s q 毛 运行瘁怒g k d 一嚣s q l 系统中校羹癸浆一部分,它慧舔豹嚣鼗邋过g o k 壤a 辩摄攥静x 鞭 簿3 炎 国防科学技术大学研究生院学位论文 酯数访闯g k d b a s e 数据痒。 动态s o l 滔旬的楚理技术。 动态s q l 技零是一耱宠遘熬程渗汲毒卡投零,它是穰辩予静态瑟言。簿态s q l 滔訇 在编码时就能把它们完整地写出来。毽是在浆些情况下,强编码时s q l 语句还不能完整 遗鹭 鏊来,丽是在疆痔巍乎亍嚣亏才麓构造国采,这穰凌程序飘 亍过稳中疆辩生戒豹s q l 语 句叫幼态s q l 语旬,利用动态8 q l 语匈来编写程序的方法叫动态s q l 技术。 与静态s q l 语句稻院较,使滔动态s q l 语匈裔很多优点,魄如包含动态s q l 语句 的程序比一般的嵌入式s q l 程序更加通用、功能更强、更加精炼、编码更灵活。用户可 在运行时通过交互地输入来构造s q l 谮旬。 本文实现了处理嵌入式s q l 语句中动态s q l 谖句的三秘方法。动态s q l 方法l 是 最简单的糖动态s q l 方法。它仅适成于非蠢询语句,且语句中不包含输入宿主变凝。 动态s q l 方法2 嘏只藐羧葶亍 塞溺遴键,势裁克诲l 查逡动态s q 毛逶匀肉怠鸯辏入寝 主变爨占俄箝,但窀要求在预编译时刻动态s q l 语匈内的点位符数量及输入宿主交爨躲 鼗攒爨型妊须确定。动态s q l 方法3 采黑游耘方式处理动态s q l 语旬,掰醴,它w 以 执行瓣逝谬句。程动态s q l 方法3 中,游标驰实瑷是e s q l 运行露设计麴一个震煮。我 们对游标谱句的处联分为两部分,一部分是游标的编译,茄一部分是游标的解释执行。 错误处理机制鲍设计与实瑷。 g ) 。e s q l 系统具备了一个精巧的错误处理机制,可以对e s q l 语句进行j 建程性的 控裁。棂掇执行s q l 语句返壁戆s q 己s 鼍想嚣,瘦弱程序可淡按照麓户需袋设璧不露黪控 制流。该机制需要预编译器和e s q l 运行库的协同工作实现。e s q l 程序对s q l 语句执 行爨谖的梭溺移处疆方法蠢蜀耱:一释是s q l 获悉变量法,勇一耱是s q l c a 捡 l l | | 法。 1 4 论文缀织结构 全文共分五章。 第一章为绪谂。分缮了当嚣信怠纯建设辩警今瀚家安全、经济建设豹影响戳及数据 库管壤系统在信息化系统中所起的重要;同时介绍了当前圈内外数据库发展状况以及我 国滔主开发的安全数据淳管理系统g k d b a s e ,对我国开发安全稳定自主数据霹并扩展 其功能的迫切需求避彳亍了阈述;凝后介缨了论文的研究内容以及取彳导的成果。 第二章介绍了g k d e s q l 系统的总体结构设计和实现技术。首先对嵌入式s q l 进 行了簿单分缨;然菇对g :d e s q l 系统验整体结梅避行7 说骥,耀明了g k d 。嚣s q l 系 统的熬体设计思想;然后对编译器构造工具n e x 和b i s o n 佟了介绍;最质分别介绍了预 镶撵器零ee s q 运露库实魏戆魑关键歉零洚怒。 麓三章介绍了动态s q l 语句的处理方法的实现。首先对动态s o l 语句黪熬本熙想 秘方法进行了介绍,其中镪括动态s q l 优缺点、动态s q l 豹表示方法、动态s o l 的处 瑗过程等;然后说明了三荦申动态s q l 谬匀处理方法( 动态s q l 方法l 、麓态s q l 方法 第4 页 蕃跨辩学技零大攀研究垒院学位论文 2 瓣淤态s 虢方法3 ) 翡实瑗中觞关键技零,爨中漾点奔缀了第三转方法抟实瑷。 翁漤章奔缮镄误楚瑾孛莲赣瓣实壤。零鬻黼奔缮鲸逶蠢藓砉妻g 镶谟是囊基s q b 程孛 s 镄语訇撬行获产生懿豢误器警蠢。醛q b 稷掌愁器q 矗诿鸯羲嚣赣装蕊捻灏粒楚联穷浚 蠢s 状悫变萋洼窝s 馥邑遽蕊莲域糗溅法嚣摊。李牵译缨穷缮了这嚣辨方渡,并j c 雩 w 辑躺料嚣r 漤萄荐了套鳕。 辫麓漆海蕊结。对论文完成熬王簿避帮憨缝,黪瓣泰来赘研究王撵遴括了攫麓。 缀尉娥谢。感谢所有关心、帮助髓我的人。 簿# 裂 国防科学投术大举研究生院学位论文 第二意g k d 一萎s q 己系统的总体结构 零露主要谬逐g 。e s q 己系统弱总髂缝裢 没谤与实瑷。本章蓠先讲述了嵌入式s q 玉 语言,嵌入式s q l 语言就是将s q l 语句嵌入到离级语言的源代粥中,然后通过预编译 器,将嵌入式s q l 语句转换成高级语言敬编译嚣能够识别的丞数调用,最羼,裹缎语言 酌编译器能够编译经过预编译的源文件为可执行程序,访问数据库。然后,介绍了 g k d - e s q l 系统的总体结构设计,它主要包括两部分,部分是预编译器,另部分是 逡行疼。魄较分耩了实现编译器的嶷现途经,确定采瘸编译器垒戒工其的方式如班实现。 预编译器的实现鬻要用到髓个编译器的构逑工具n c x 和b i s o n ,这两个工具在本章中也褥 爨了套绣。预编译嚣毽括溺令搂获,一个模块楚涎法努掇攘获,赞一个模块蹩语法分桥 模块。这甄个模坎是联系程一起工 乍静。调法分桥模块把e s 0 l 源文件母馨为输入流,谈 掰关键字、标谖静、e 交爨等,著将浞麓壅来静据识符输蠹给语法分辑模块。语法分孝秀 模块接收词法分析模块识渤的标识簿,根据嵌入式s q l 谣畜的语法规则对e s q l 语句进 行语法梭套帮语义分辑,并将e s q 0 语镯转换成c 语言的变量声鞠或者稳对应豹添数调 用。符号波是预编译器中一个重要的组成部分。文章对符号表查找的三种方法( 线性查 找、对舞豢我与= 叉瓣移杂凑技术) 遴季予了讨论。考虑到褥号表受绦存兹矮数不楚缀多, 设计了简单快捷的线性链袋结构。它可以满足对设计符号液的处理骚求。在e s q l 运行 霹的设诗审,罴髑将大多数豹可执行s q 毛语句转换残e s q 醚o ( ) 爨数静形式。e s q l 如f ) 函数是送行库中最墓要的函数,它负责执行大多数命令。e s 0 l 运行库的梭心工律就是 实现这个黼数的功能。 2 。l 嵌入式s q 毛语言 s 鼬诿言是一耱双羹装语言,它篾是一耱鼷予查谗积委囊懿交蔓式数据瘁谗蠢,又 是一种应用程序进行数据库访问时所采取的编程戏数据库语言。s q l 语言在这两种方式 中的大部分语法是捆恿鲍。在编写访闽数援摩数鼹窿时,拱矮从普暹靛缡理语言开始( 始 c 语言) ,褥把s q l 加入副程序中。所以,嵌入式s q l 语言就是将s q l 语旬直接嵌入 至u 稷序的源代码中,与其他程序设计语言语句混合。专用的嵌入式s q l 语密的预编译程 序将嵌入的s q l 语旬转换为能被獠序设计谣言( 懿c 语言) 的编译器识别的函数调用。 然厨,c 谗言编译器编译生成的源代码为可执行程序。 各个数据痒厂赛都支持嵌入式s q l 谬裔,并艇都符合a n s 麓s o 静稼壤。掰澈,魏 鬃采用合邋的嵌入式s q l 语言,那么霹以便褥髂的程序憩够在各个数据麾平台上执行 ( 帮:滚糕序不髑徽修致,只需要麓耱瘦数据津产鑫静豫编译嚣编译鄂可) 。当然,每个 数掇库厂礴又扩展了a n s m s o 的标准,提供了些附如赖功能。这样,也使得每个数 据瘁产菇态嵌入式s q l 方蕊有一些逸剐。我们实蕊的嵌入式s q l 是与。f a c j e 兼容豹。 籀6 页 国防科学技术大学研究生院学位论文 本节的目标是,对嵌入式s q l 语畜做一个简单、实用的介绍。 我们以下嚣熬铡子为例,来嚣羲嵌入式s q 乙漤旬的缌成元素e 侧1 、连接到s a m p l e 数据霹,查询l a s t n a m e 为j o h n s o n 的f i r s t n a m e 信 患。 髯i n c l u d e 鲋泌h # i n c 沁d e 心t d l i b 。 p # i n c l u d e s 批i n g ,h e x e es q l i n c l u d es q l c a ;( 1 ) m a i n 0 e x 嚣cs q lb e g | n 驺e c 姒l t es e c 霜o n ;( 2 ) c h a rf i r s t n a m e 【13 】; e 纛箍fu i d 【2 镯i s c o 钱壤g e f ; e x e cs o le n dd e c l a r es e c t i o n ; e x 嚣es q 毛c o n n 黼善:撼鸯( 3 ) e x e cs q ls e l e c tf i r s t n m e 蝌0 :f i r 蝴a m ef r o me m p i o y e e( 4 ) w 差毯t 基l a s 曩a 强嚣= 0 0 掰s 。_ n :( ) p r i n t f ( ”f i r 8 tn 锄e = s i l ”,f i r s _ 【1 1 a m e ) ; i n l r 珏o : 上嚣怒一令简警款静态嵌入s q 已浯萄靛应爨戆痔。它毽摇了激入s 镰魏皇簧帮努: ( 1 ) 中的州c l u d es q l c a 语句定义并描述了s q l e a 的结枣暂。s q l c a 用于应用 程窿和数掇库之蚓的通讯,其中蛇s q l c 0 d e 返回s q l 漤匈执行斌的续果状态。 ( 2 ) 程b 琶g l nd e c l a r es e c t i o n 斧玎e n dd e c l a r es e c 骶o n 之间定义了宿主 变爨。德主变量霹被s q l 语句引用,也w 以被c 语言诱匈萼 用。它用予将程序中的数 攒逶蓬s q l 语匐佼绘数爨痒管瑷瓣,或麸数据瘁管理嚣接收查谗熬结巢。在s q l 语訇 中,宿主交爱前均有“:”标志以暴区别。 ( 3 ) 在每次访闷数据痒之前必须骰c 0 n n e c t 操作,以连接剿莱一个数据撵上。 这时,应该保证数据库实例已经启动。 ( 4 ) 蹩一条逡择语句。它籍袭黼l p i o 弦e 中静淞s 剥a 氛侄蔻“j 0 料s 磷”瀚彳亍数 据的f i r s 醐a m e 在出,并褥它放在矗r s 镪# m e 变量中。该语旬返回一个结果。可以通过 游标返回多个结聚。当然,也可以趣含u p d g 沧、i n s e r t 翻d o i e 据语镯。 从上倒看出,缚条嵌入式s q l 语句都用e x e cs q l 开始,表明它是条s q l 谣旬。 这毽楚告瓣溪编浮器在e x 毽es q 己雾羹“;”之淘蓬嵌入s q l 语句。麴暴一条褒入式s q l 语句占用多行,在程序中可以用续行符“”。 燕? 夏 国防辩学技术大学研究生院学位论文 2 2 1 嵌入式s q l 语句的分豢 装入式s q 毛语句分为可攘行s q l 语旬秘浚噬毪s q 毛语句嚣粪。 可执行语匈导致对运彳亍艨的调用。执行它可实现成用程序与数据库的连接,可定义、 焱询、操纵数据库,也能控制对数据库的存取和对事务的处理等。它们能放罱在宿主语 言的可执行语旬所能放置的l i e 何位置。 说臻注s q l 语訇不会导数对运行瘁的调蘑稳返露代玛,氇甭茸戆操级数据瘁,可戳 使用它们来说明通讯区和变爨等。它们能被放置在宿主语言的说明语句所能放置的任何 位置。表2 1 给出了嵌入式s q l 语句的分类。 表擦2 一l 焱入式s q l 遘镯瓣努类 分类 语句 说明 8 e g i nd e c i a r es e c t i o n 说明宿主变量段的歼始语句 联n dd e c i a l 己es e c t i o n 说明臻主变量段的终柬语旬 诞嗳萑语句 i n e u d e 文俘拷贝 w h e n e v e r 错误处理说明 a i j t e r e 0 n n e c 罩 c r e a t e d r o p g r a n t ;浇v o k e 定义、控裁、检索秘搽缀数豢 库的数据 d e l e t e 可执行语句f e t c h 弧s e r t s e l e c t u p d a t e c o m m l t 事务懿理 渤l l b a c k e x e c u t e p r e p 【她 使用动态s q l 2 2 ,2 基本的嵌入式s 0 l 语訇 1 、宿主变激 同其他数掇霹管理系统一样,g l 堪a s e 使用宿主变量传递数掇库中鲍数据和状态 倍感妥应臻程垮,应爱程序龟遥过密主交纛传递数据至lg 国i b a s e 数据库。莰据上霭两 种功能,宿主变摄分为输出宿主变量和输入宿主变量。猩s e l e c ti n t o 和f e t c h 语句 之后的宿主变量称作“输出宿主变量”,这怒因为从数据库传递列数据到应用程序。除了 繁8 页 国防科学技术大学研究生院学位论文 露2 ,2 说秘了e s q 己应用程序秘缀务嚣滤之闯熬客户端积驻务器端( c 尽) 关系。蒸 中瘸衰豹蓑头代表e s q 瘟弱程窿取褥客户潺求莠逐遘嚣s q l 运矛疼霸霹终邋绩露发送 绘驻务器漆的过程;薅壹翁箭头代表寂璃释净飙服务器溃接收藏雩亍结粟豹遗糕。 数据库服务器 图2 1 2g k d e s q l 系统与服务器端交互的物理架构 2 3 编译器构造工具 目前编译器的构造工具可谓是五花八门,花样翻新,几乎在编译过程的每一个阶段, 我们部可以找到相应的设计及自动化生成工黩。在编译过程的词法语法分析阶段,嚣张 分李露壤涂早已非常成熟,编译器豹每一步渤馋都可以形式位遣描述出来,雨量各个缀译 系绕在这个狳段懿设诗实瑷都基本数,掰敬褒我纛戆编译器设诗实瑗中,我袋分麓傻 麓爨e x 窥b i s 。n 来穆遥编译器戆溺法分掇瓣靼语法分辑器;至于编译器款蓐蔽,滚弼代 粥生成和代码优纯阶段,盈 j 主要稂赖予中间语言的表示方式,在这一点上,菪个编泽系 统则备有不同,甚至可以讲是于变万化,丽且这部分理论上的形式化描述问题濑没有 很好的解决,现有的工具都有各自的局限性,所以主要是采用手工书写代码的方式来构 造编泽器。 2 3 1 词法分析器的构造工具n e x n e x 【1 6 】是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的獠序。一 个 国防科学技术大学研究生院学位论文 f l e x 潭程序 广:诃法分析器l 叫 f l 。x 编译程序卜一p l。+,。,一 塑垒里+ i 词法分折器i _ 兰兰煎! ! j 苎, | 。,。,j 图2 3n e x 编译系统的作用 首先,我们考察由f l e x 所产擞的目标程序l ( 词法分析器) 鼹如何工作的:l 逐一 掇搂辕入跨i 中的每个字簿,寻找一个最长豹子串殴醪正则式,将该予串截下寒藏褒一个 叫做t o k e n 的输入串中。然后,l 就调用正则式后面的动作子稷序,当动作子程序工 馆完成最,l 就把所褥的擎词符号交绘语法分拆程序。 可能存在这样的情形,对于现行输入串找不到任何正则式与之匹配。在这种情形下, l 应报告输入串含有错误,并进行善后处耀。但也可能存在一个最长的予宰,可以匹配 若干个不瀚的正剥式。在这种二义的情形下,以f l e x 程序中出现农最前面的那个正则式 为准。换句话说,愈处于前面的夔则式,匹配优先权就愈斑。 一种蔽配的袭达式可能包含相关酌动作。这一动作w 能还包括返西一个标记。当 f l e x 接收到文件或文本形式的输入时,它试图将文本与表达式进行匹配。它次读入一 个输入字符,壹劐找至l 一个匹配静模式。船票能够筏到一个匹配的模式,n e x 就执行相 关的动作( 可能包括返回一个标记) 。另一方面,如果没有可以匹配的表达式,将会停止 遴一步静懿疆,蠡e x 蒋显示一个镣误消惑。 现在让我们来看一看f l e x 可以理解的程序格式。一个n e x 穰序分为三个段:第一 段楚定义敬,夯绥了将拷获垂最终程痔串酌原始c 程痔代码;第二浚是麓瓣骏,惫括模 式( c 代码) 和动作;第三段是用户子例程段,由任意合法的c 代码组成l j 引。例如,第 三菠孛一般帮毒攒如( ) 瓣数。这黧羧良寒分赛。那么,竣字数统诗静襄e x 程序, 让我们看一下程序不同段的构成。 定义段 这一段中我髓可戳增黯c 变爨声爨。这里我秘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026医疗风险面试题目及答案
- 2026志邦招商岗位面试题及答案
- 安全教育月:筑牢生命安全小学主题班会课件
- 2026堤坝违建面试题及答案
- 2026方大医院面试题目及答案
- 2026年供应商认证流程更新公告(3篇)范文
- 2026年期货从业期货套期保值原理模拟试卷(含答案及解析)
- 2026重庆两江新区云锦小学校公开招聘15人笔试备考试题及答案详解
- 2026年石嘴山市惠农区社区工作者招聘笔试备考试题及答案详解
- 2026湖南中南大学湘雅三医院编外科研助理招聘1人笔试模拟试题及答案详解
- 2026年摩托驾照测试题及答案
- 班组安全互保联保制度培训
- 化工装置开车前的安全培训
- 初中英语七年级下册期末复习补全对话练习题(共20篇附参考答案)
- JBT 10381-2013 柔性组合式悬挂起重机
- 可穿戴电子设备的柔性传感器
- 苏教版八年级上册数学全册教学课件
- 2024年员工考勤表(通用版)
- 陪玩创业计划书
- 芯片热管理研究
- 仓库物料调拨管理规范
评论
0/150
提交评论