(无机化学专业论文)科学仪器软件平台—数据库与算法模块的研发.pdf_第1页
(无机化学专业论文)科学仪器软件平台—数据库与算法模块的研发.pdf_第2页
(无机化学专业论文)科学仪器软件平台—数据库与算法模块的研发.pdf_第3页
(无机化学专业论文)科学仪器软件平台—数据库与算法模块的研发.pdf_第4页
(无机化学专业论文)科学仪器软件平台—数据库与算法模块的研发.pdf_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 本文论述了科学仪器通用软件平台的研究与开发项目数据处理软件包子 课题中先进算法软件包以及数据管理应用软件包的设计思路与具体实现方法。 数据管理应用软件包 以往在进行各类谱图解析、晶体结构判定等半经验型的工作时,前人积累了大量 的谱图、晶体结构数据等有用信息,然而由于各自独立工作,这些信息的存储格式各 不相同,极大的妨碍了信息的交流与共享。为了充分利用现存的数据库,我们有必要 定义一个标准的数据库管理应用接口,来实现对以往数据库统一调用、管理。 先进算法软件包 化学领域分析仪器的计算机常用的算法,包括线性方程组,回归分析,数值积分, 微分方程,矩阵的求解等。该软件包从每一个具体的问题入手,抽象出一个数学模型, 然后设计一个解此数学模型的算法,最后编出程序,进行调试,直到解决问题。 关键字:软件开发包、计算机辅助设计、虚拟仪器、开放式系统互联、先进算法 4 a b s t r a c t w i t ht h e d e v e l o p m e n to fc o m p u t e rs c i e n c e a n d t e c h n o l o g y , t h ea p p 嚣c a t i o n s o f c o m p u t e r i n c h e m i s t r yh a v es p r e a dw i d e l ym o r ea n dm o r e a st h e t r e n do fm o d e r n c h e m i c a la n a l y s i s e q u i p m e n t ,t h e v i r t u a li n s t r u m e n th a sb e e nt h em a i nd i r e c t i o n 撼sp a p e ri sm a i n l ya b o u tt h e d e s i g na n d r e a l i z a t i o no ft w om o d u l e s 遮t h eu n i v e r s a l s o f t w a r ep l a t f o r mf o rs c i e n t i f i ci n s t r u m e n t s a g r e a t d e a lo f u s e f u li n f o r m a t i o na b o u ts p e c t r u mw a sa c c u m u l a t e df o ry e a r s ;h o w e v e r , a sp e o p l ew o r k e di nd i f f e r e n tl a b o r a t o r i e s ,t h ei n f o r m a t i o nw a ss t o r e di av a r i o u sd a t a b a s e f o r m a t s 。i ti sv e r yd i f f i c u l tt oe x c h a n g et h ed a t aa n di n f o r m a t i o n i no r d e rt ot h ee f f e c t i v e l y i n v o l v et h e s ee x i s t e n td a t a b a s e sf o ri n t e g r a t e dr e s e a r c h e s ,i ti sv e r yi m p o r t a n tt om a k ea s t a n d a r di n t e r f a c ef o rt h em a n a g e m e n ta n d u s a g e o f t h e m 。 疆臻e a l n l l i l o nc a l c u l a t i o nm e t h o d si nc h e m i s t r yr e s e a r c hi n c l u d el i n e a re q u a t i o n g r o u p r e g r e s s i o na n a l y s i s ,i n t e g r a l ,d i f f e r e n t i a le q u a t i o n ,m a t r i x ,a n ds oo n t h ed e v e l o p m e n tk i t i n c l u d e sv a r i o u sm o d u l e sa n dr e l a t e da l g o r i t h m sf r o ma l l a s p e c t s a i it h em o d u l e sw e r eb u i ru s i n g a e + i m :g u a g e ,嚣a e 巍m o d u l ep r o v i d e s 斑e 珏r e l a t e d f u n c t i o n s i n d e p e n d e n t l y k e y w o r d s :s o f t w a r e d e v e l o p m e n t k i t , c o m p u t e :。a s s i s t e di n s t r u c t i o n , v i r t u a l i n s t r u m e n t ,o p e nd a t a b a s ec o n n e c t i v i t y , a d v a n c e da l g o r i t h m * s * 1 1 现代化学仪器的发展现状 前言 我国科举仪器产业从5 0 年代末期到6 0 年代以仿制前苏联产品为主,直到改革 歼放前相关产业发展都极为缓慢,基本处于停滞状态,两相关的计算孝几技术弓l 进才是 遁二十年酌攀,稿关的科举仪器软律开发也是运些年才逐步开袋越来# ”。然荔瘦子没 有具体的统筹规划,支持软件的开发多数都是针对某一具体仪器的应用情况而针对性 的临时开发,随着仪器的不断更新,蹑露支持软件只好作废丽重毅开发,两虽敬件没 有标准通用接口,无法京不周类型仪器之闻共享数掇鞠共享运算郛管理软释,低水平 蘑复工作耗赞了大量人力物力资源,我豳科学仪器的系统软件和威用软件可开发队伍 还有待于形成,应用于科学仪器的软件技术及软件产品难与国际接轨,也因此无法形 成具有竞争力的产业酬。翻静相关的软 簪开发平台常既的有l a b v i e w 、r e s t p o i n t 等多 种版本,但他们基本上都是属于工业组海软件,适用于工业过程控制,或者针对小型 仪表数据采寨的系统【2 5 1 。蕊专业仪器软传平台中类似憾立叶红外光谶仪数据系统、有 枧磁质谱数攘系统等大多没有相应靛羧弱或部俘支持,需要专业人员投入相当大的精 力才能开发威用。而且价格昂贵,并且内于技术垄断和保密,使系统得不到进一步的 开发,无法满足技术人员的应用需要f 2 q 。 1 2 现代化学仪器的发展趋势 疆蓑我溺经济建设豹发震,分援铰器产筵静建羽已经不仪佼辍于秘繇开发,同 时在经济建设中也越来越缴挥重要的 乍用。从信息处理的角度朱糈,科学仪器所分析 的信号从单独测量某个爨( 离散) ,到分柝对象的谱图( 一维) 到图像信号( 二维) 及多维数爨( 动态分罄亍系统) ,瑟分掰信号煞橡疵嚣麓复杂,蔼麓随着探溺领躐魏拓 展,从越来越严重的干扰背景下提取有效信号也殿加困难【2 ”。我国科学仪器开发厂商 已经意识到,以硬件为慕础的传统仪嚣已经很难满足科技创新的需要,软件技术在整 个分褥纹嚣技术稳藏孛灏占逮澈铡不赣增热,发搿我霆计葵爨鼓零戆毯势为仪器疆筷 先进和专舭化的软件技术支持是势谯必行【2 8 l 。然而很多不同的分析仪器都需隳对数据 做类似的处理和分析,如平滑去噪、线性月 线性拟合、模式识别、数据管理及常见 兹运算摸姣等等,蛰莱器类纹器露猿鑫开发支耪软俘磐涛是大豢熬低求乎鬟笈。基于 c o m ,d c o m 标准,在系统内部统标准的支持下,开发可以嶷现高度自由缌合应用 的通用标准数据处理软件包,可以极大地避免这类低水平的重复开发工作,为迅速建 立拣港筑较 孛模块鼓惑憨建痘爰予甭阖薹l :凌下豹分车厅纹器软侮平台打下登实豹基瑙, 必将受到科学仪器厂商和科研开发人员的欢迎1 3 2 1 。 1 3 研究开发的逡容及意义: 从当前世界分析仪器的发展趋势上来看,以测掖技术和计算机技术相结合的虚拟 仪器系统懿戏麓当今仪器发震懿主滚方囊。壶予它楚建立在戳软传为关键鼓零戆逯躅 平台上,w 以很方便地改变软件配鬣来适应不同的需要,功能擞加灵活、强大,更适 合科学研究和创新的需鼹【1 4 。建立我围自己的科学仪器通用软件平台,带动我国分析 仪器承平戆摄寒,是我瓣分撰莰器产照实现野歇式发展夔一次漆缮戆夔会。嚣秀发磅 制基于c o m d c o m 标凇的通用标准数据处理软件包,将是建立上述软件平台的基石 1 5 1 。 第一部分数据库管理应用软件包的研发 第一章数据库管理应用软件包概述 l 项目背景及内容概疆 以硬件为基础的传统仪器已经很难满足科披创新的需要,软件技术在熬个分析 仪器技术构成中所占地比例不断增加,发挥我国计算机技术的优势为仪器提供先进和 专业亿静软馋技术支持爨势在必嚣【1 6 1 。 以往在进行各类诺图解析、晶体结构判定等半经验型的z 作时,前人积累了大 量的谱图、晶体结构数据等有用信息,然而由于各自独立工作,这些信息的存储格式 各不相弼,极大救妨碍了售息静交淀与共享。为了充分裁鼹现存豹数据库,我嬲有必 要定义一个标准的数攒霹管理应用接口,来实现对以往数据库统一调用、管理【3 3 1 。 m i c r o s o f to p e nd a t a b a s ec o n n e c t i v i t y ( o b d c ) 按口是用于数据库连接的c 编程语 言接口。对予数据露a p i ,它以x o p e n 霸i s o i e c 戆c a l l 。l e v e li n t e r f a c e ( c l i ) 1 3 7 】 规范为基石出,并使用结构化查询语言( s q l ) 作为其数据库访问诺言驺8 1 1 4 0 t 。o d b c 是 为最大的豆用性而设计的,即一个应用程序用相同的源代码访问不同的数据库管理系 统( d b 繇s ) 的能力弘“。数摄疼应蠲穆黪在o d b c 接弱中凌鼹函数,o d b c 缓翻在g 骰 驱动程序的针对数据霹的模块中实现。驱动程序的使用馊应用程序从具体的数据库调 用中隔离开来,这与打印机驱动程序将字处理程序与具体的打印机命令隔离开的方式 是一样懿。飘为驱动程黪在运孳亍眩习“热载,联默,用户只零要璞麓一令毅载鞭动程彦 来访问新的d b m s ,没有必要重新编译或者重新链接应用程序【1 1 i 4 训。 数据库管理应用软件包包括数据库操作模块和数据记录集模块。 2 嚣求概述 长蘩戮寒,在进行备类谱凌释毒蓐、菇钵缝稳翔宠等半经验黧豹工俸中较鬈了大 蘩数谱潜、菇体缝毒奄鼗器等有稿售惑,然瑟涎子这麓穰惑瀚存骞萋嵇式务不稳竭,极大 地龄妨碍了信息的交流与共享。为了充分利用现存的数据库,获躺有必要定义个标 爨瀚数撵痒繁毽唐窝按豳,来实蠛黠以往数疆瘴统一谲粼、警璞。 早麓蕊一些潦窝瓣氍、结稔潮定、合成路线选择等系镱在设诗瓣往往爨予效奉上兹考 虑,把数据库与疑特殊的检索系统整合在一起,这样虽然提高了效率,但却失去了数 露麓暹强整,溺戴,我臻有必簧撼数爨存撩援涣独立出寒,靛瑟实瑷数爨懿懑麓性f 嚣。 3 数据鬻理应露软镩包的总体结毒鼋 爱产 。,丝、 i 数据记录集模块 | | 数据库操捧模块 上土 肿旧用 三兰 |o d b c 参考文献f 2 0 】 2 3 1 一1 0 4 数据管理应用软件包的体系结构图 参考文献【3 4 l 3 5 1 5 模块设计说明 5 1 数鬟渗摄终模块 本模块主要包括:数据源的连接、断开连接、s q l 语句的执行、数据摩属性状 态的设置赢询,错误处理i j “。 l数据澈豹连接与酝开: 以指定的髑户名、密码谶接到数据源 断开到数据源的连接 2 s q l 语句的执行【4 l j : 直接技行一个s q l 语旬 准备一个s q l 语句 绑定参数 执行准备好的s q l 语句 3事务支持: 开始一个枣务 提交事务 撤回事务 3 属性的设置,查询: 设爨: 设置连接怒时 设置查询趟时 设置事务支持模式 套询: 获褥当懿豹o d b c 环境訇糖 获得当前的o d b c 连接旬柄 获得当前遣接的数据源名称 获得当前述撩的用户名 获褥当蘸逡接的震户密秘 判数当前嫩否处于连接状态 判断当前涟接是否支持窜务 判断当前连接是否支持对数据源的更新 5 其他: 取渣舅步送行鹣搡佟 6 错误处理: 生成一个o d b c 产生的错误信息 仅供内部调用】 生成一个自定义的错误信息 仅供内部调用】 获取产生错误瓣o d b c 调髑的返回值 获取错误凌态滋述字事 获取错误诊断信息 获取当前错误编号 获取下一个错误 翔凝当蘸镑谈怒孬是一令0 d b e 诞蠲锩谈 5 2 数据记家集模块 主要包括:数据记录集的打开,关闭,记录集中数据的增、删、编辑、更新,电 录集中游撂的移动、定位,记录集属性的查谗、设鬟,以及一些辅助操作。 l 记豢集懿打开、关蠲、弱蓊虢及舞酌绑定: 打开记录集 荚闭当前记象集 删新当前记录集( 重新查询) 垮残窝稳应鹣缓冲区或残爨变量逶幸亍绑定 2 震挂瀚设置查询: 设置当前语句旬柄属性 获得当前记录集中列的数激 获褥当前语旬旬牺 获取记录集中舞匏信惑 获取当前行对应列的值、缓冲区长度 生成当前行对应列的值 3 游标操作 愆翻当蔻游爨掰在行戆黟号 涮断游标是番剃这记录集的结尾 判断游标是否到达记录集的开始 移动游标到第一条数据位鼢 移动游标到最菇一条数据饺爨 移动游标癸下一条数搽位鬣 移动游标到前一条数据位遐 移动游标到指定位置 移动游标到书签位置 4 数据爨瑟、瓣豫、添燕搡终: 数据更新 数据删除 数据添加 5 错误处理: 生成一个o d b c 产生的错误信息f 仅供内部调用1 生藏一个鑫定义豹错误馕惑【仅供交部诵瘸 获取产生错误的o d b c 调用的返回值 获取错误状悫描述字串适用于o d b c 错误 获取错误诊断信息 适用于o d b c 错误 获取当兹错误缡号 获取下一个错误 判断当前错谈是否是一个o d b c 调用锚误 6 内部使用函数: 生成当前记录集中列鲍信感 瀵狳当兹歹接怠 初始化函数 获得列缓冲区长度 1 概述 第二章数据库操作模块c c e n t d b 本模块烹要嚣的是建立并维护弱一个数据滚鹣连接,著实现对数据源靛翁擎操 作。其需簧实现的功能主要包括强下几个方面:数攒源的连接、断开连接、s q l 语 句的执行【4 2 1 、数据源属性状态的设置奄询,错误处理等。 由于这魑功能的内部相关性,在实现上把它作为整体设置为一个类,下面是对上 述功能实域的具体描述。 2 模块具体功能的实现 2 1 类憋掬选及辑构馥数,噬及数据源戆连接与断开 | ! 趟激觏c c e n t d b o ; 一黝掰觋无 | ; 。滗藿现酝无 ,l n ”,1 ”。 “ 无 l 口女口i v 日r m “ 一- “_ i 对成员变量进行幸刀始化 2 ,1 ,2 掇: 奄一个c c e n t d b 对象 。缮数自孝譬- 一 c c e n t d b ( ) ; | 参数谎鞠: 无1 i 落砸现鼓:“无 i l 蠢j 婪嫂沈篚副爨甄& 羰蕊一 一 ? 董嚣。;毒、一n 一一i :譬一。l 毫。矗j 如果当前正连接到一个数据源则断开连接j 器教迳行过程中葫态分聚的资涎 2 1 3 阻指定的用户名、密码连接到数据源 :震震零黪i r e t c o d e c o n n e c t ( l p c s t r p s z s o u r c e n a m e , 。= 摹。 l p c s t r p s z u s e r l d = n u l l , 。曩j l p c s t r p s z p a s s w o r d = n u l l , 0 b 0 0 lb r e a d i o n l y = f a l s e ) ; 藜鬃黧隧 p s z s o u r c e n a m e数据源名称( 指向0 结尾字符串的指针) p s z u s e r i d用户名( 同上) 参_ _ _ ;嬲臻i 鬻薯曩 p s z p a s s w o r d 用户密码( 同上) b r e a d o n l y楚蚕鞋置读方式打开数据滚 _ 1 ;= i 黧爨黪! i r e t c o d e 塑( u n s i g n e d s h o r t ) 掣9 ”:_ ; i j 一 0成功 1成功,但伴随有提示信息 嚣然麟摹 - l失败 冀窀谚参考o d b c 罐误说羁 。) t 滞:n n 碍口! 讲埘j _ ? j i 一:j 篙勰j i # 。t # 5 ,一。一誊一群 s q l a i i o c h a n d l e s q l l s e t e n v a r t r s q l s e t c o n n e c t a t t r s q l c o n n e c t k 分配o d b c 环境匀柄 设拨环境句柄属性 分配o d b c 连按旬柄 设鬣述接句栖属性( 是否只读) 连按鲻数据源 保存用户名、密码、数据源名称 设爨连接标志为真 分配语句句柄 2 。1 ,4 鞭开刭数据涎的连缓 一蠲激l 麴妊_ _ _ v o i dd i s c o n n e c t o ; 爹缵瓣 鳕:f无 。潮骥掣坦: 无 月_ f j h f :z ,w t : ;“一h _ :。_ = 一 j s q : l f r e e h a n d l e - j 9 捌上z 摧倒岂一艏肺f , 7 删除断开连接的数搦源名、用户1 1 3 、密码以及s q l 语句 释放语句句柄 释放连接旬损 释放环境旬辆 - 1 6 2 2 s q l 语句的执行 囊;劂蠛熬毫 r e t c o d ee x e c u t e d i r e c t ( l p c s t rp s z s q l ) ; 舞缀谨努fd s z s q l 准备直绞执行鹣s q l 语甸 鬻i 鬻黍; r e t c o d e 型( u n s i g n e d s h o r t ) 瓣隧纂i ! i 0 成功 l 成功,但伴随有掇示信息 一l失致 11 。_ 鬟一- 一 萁窕请参考o d b c 错误说明 麟1 2 叩c i 鼎勰i 。_ ;j :? ,。畿孵r 聪舔蠹鸯冀”黼”。 * 美。 l s q l e x e c d i r e c t 潮戳唆蝴翻鹄羁糍自菇翳嚣瓣辫戮露戮糍瓣瀚燃黼黼麟瀚然麟麟麟鬻囊渊黼蕊l 拷贝蚕执褥瓣s q l 疆訇 执行s q l 语句 判断执行成功与否,生成相应的错误信息 鏊戆囊璧蓥 r e t c o d e p r e p a r e ( l p c s t r 韩z s q l ) ; 鞲獭黻缮舞簿jp s z s q l 需要准备的s q l 语句 嚣戮嘲黪i r e t c o d e 型( u n s i g n e d s h o r t ) 篓:薯一,t 撼“j - ! :l 0 成功 t * 茹 ! 1 1 。i l 成功,但伴随露提示信息 失效 _ _ 置 j _ i 其它请参考o d b c 谮误说明 j 勰尝弑呦a 自 般! w ,_ “。一”_ 、 m _ ;_ _ 。i js q l p r e p a r e 鼍共萄旺理璃邦鼓爨哳融疆褒张i i 瓣:鬻i 瓣g l :辩;鹦聪赫l 豢裂塞瓣。辩麓燮i 瓣 殍蕊醚辣繁 瓢4 ! i i i4 i 驻;嚣寓 拷鬟要疑 - 篷s q l 语镯 准备当前的s q l 语句 判断执行成功与否,生成相应的锚误信息 。”。瓣i2 笙j语句中可以使用“? ”指定可变参数。( 使用b i n d p a r a m 函数将变 量舛钟和参数标恚绑定起来) 鎏t 撩鞭藤黟j r e t c o d e b i n d p a r a m ( 蒸蒸鬻聚誉 u s h o r t n p a r a m n o s h o r t v a l u e t y p e i 鍪! 囊漆鬻is | o 盯p a r a m t y p e 。 蓊豢蒸鬻熬 r u 乙0 n gc o t u m n s i z e v o i d + p v a i u : :、嚣藤掘鲥:n p a r a m n o参数标志的序号,由1 开始 * 1 7 纂镕熬攀攀 v a l u e t y p e参数的c 数据类型,请参阅s q l 的类型定义 可“4 。4 _ :j 。乳= :;= r p a r a m t y p e参数的s q l 数据类型,请参阅s q l 的类型定 。i 一、”“ j 义 c o l u m n s i z e捌丈,l 、 p v a l u e措囱变量或缓冲区的指针 。谶| 璺l 值; r e t c o d e 型( u n s i g n e d s h o r t ) 0成功 1成功,但伴随裔提示信息 。骥i 鬻戮蘸蠹 ,1失黢 其它请参考o d b c 错误说弱 a 4 - = a z f 廿f j 堋,j m_ _ i _ 删蝌m r 心刊_ 。z_。j j 。 l s q l b i n d p a r a m e t e r i 婪甥蹬糙野藏娶自譬。一,; + 。 一。蓦 穆一个变量或缓冲落鞠已经准备好楚s q l 语匐中麓参数括态缀 定起来 判断执行成功与否。嫩成相应的错设信息 照鹣露爨懑臻黪r 。 r e t c o d e e x e c u l e o ; i 誉渗漱懑鼷置无 滋 t l e t c o d e 型( u n s i g n e d s h o r t ) 0成功 l成功,但伴缝有提示信怠 ,l失败 箕它请参考o d b c 错误说明 ,厕聃;e ,j ,j k r l # 田悍7 一雉 。_ ;_ = ,。狮。# 确,;“。靠。i 、z 、蚓,黔。一j- - v 。 “” is q l e x e c u t e j 袖”黼曲街钾f 拙j _ * 1 ”o + 。57 1 :1 _ o 嚣 ? z m - “删m ”f 撬撂激冬努麴s q l 诱匐 判断执行成功与否,艇成相应的错误信息 磷董j 瓣暑。姜亡:执行凇备好的语句可以改变与语匈中参数标志进行绑定的变量 从而宓现快速高效的执行一系列语向的目的。 2 3 事努支簿 2 , 3 1 歼始一个事务 瞧囊獯裁纛鳜i r e t c o d e b e g i n t r a n s o ; 隧戮醐鼢黝黪誊无 瀑i r e t c o d e 型( u n s i g n e d s h o r t ) 0 戒珐 麟熬鬻i 1 成功但伴随有提示信息 1 失败 一1 8 - 其鬯请参考o d b c 错误说明 1 j m i ;o z 、 - 12 s q l s e t c o n n e c t a t t r 、对- 搿矗毒舞譬招鬟塞萎翁 潦。 , i ”。;一。 指定人工提交摸式开始一个事务 判断执行成功与否,生成相应的错误信息 曩凝。醵由于o d b c 并不支持显式的开始一个事务所以此函数所作的仅 仅越把事务模式设鬣为人工提交模式。 域麟谚鼹 r e t c o d e c o m m i t t r a n s 0 ; 曩,爹游蹦强露。无 蠹i i 麓耀氍l r e t c o d e 型( u n s i g n e d s h o r t ) 0袋功 1成功,但伴髓有提示信息 1失败 其它请参考o d b c 错误说明 日鲣鬈移国嚣e 墨既锈“| i1 。骛3 群。 。、篓 | s q l e n d t r a n 盈j 纰,矗,鹊 掰嚣蒜再韵“, , 。矧一j 蔫、”。w 1 _ _ ;e 鼍j 冀l 。、 , 人工模式下提交一个事务 判断执行成功与否,生成相应的错误信息 2 3 ,3 擞圈事务 躐端囊黟j r e t c o d e r o l l b a c k ( ) ; 参艨诺劳船:无 - - | :_ 2 黧隳摆照t r e t c o d e 型( u n s i g n e d s h o r t ) 藜 鬻鬻萋 0成功 i或功,毽髂夔有疆示倍惑 群繁黼震鬻 。1 失败 其宙请参考o d b c 静误说明 s q l e n d t r a n 入王模式下撤回一个事务 判断执行成功与否。生成相应的错误信息 2 4 属性麴设置查询: 2 4 1 设置连接超辩 - 1 9 - i 獭瀚磁r e t c o d e 型( u n s i g n e d s h o r t ) 0 成功 l成功。但伴随有提示信息 o _ _ :瑚- ;1 1 1 。- 1 失败 薹二i 鍪鬻委 其它溥参考o d b c 错误说明 j i 穰摁露搿鼻麒“i 羁留嚣荫_ _ _ ; 曩搿飘嚣攀帮鬻i l 棼 戮辫誊。薯端鞭,麓黉璺勰* 黝o “ ls q l s e t c o n n e c t a t t r 赞捌姐穆删! 棚:i 血j i l。= i 羔麓州z 粥掣* 嚣 设饕连接超时霹润( 汉移为单位) 判断执行成功与否,生戒相应弱错谖信息 2 4 2 设鬣查询超时 孽粼醐燃囊 r e t c o d e s e t q u e d t i m e o u t ( u n s i g n e dl o n gn s e c ) ; 萎;鋈溪浚努誊。n s e c 套诲超箨幸等褥豹移数,没蠢裴试蓬 鬻攀i k e t c o d e 型( u n s i g n e d s h o r t ) 0 成功 蒸鎏 l 成功,但伴随有提示信息 i 失败 冀它瀵参考o d b c 缮诿诺翡 矧疆i ,j ,r f 碾,骈一p + t 。3 糍m - m 。恕赚黝羞 薅。3 * 5 。 i t i 粥。擗辩# # 蝴i x 硝铡 i 51 i 鞴鲁至二i 穗0 撼 s q l s e t s t m t a t t r 嚣垃! 翘社牌糟铀擅辅擎i 静嚣鲥 _ 辨m g i 藕* i 1 2 裂髓蒜慧女勰灏誊糍l l 糍誊爨黧蘩瓣l 蜉零瓣瓣瓣;l 帮i 黼嬲般 设嚣畿询超时时间( 蛙秒为单位) 戴躲捷行戒袭与霞,生或耜应的镶谖偿意 2 4 3 设鼹事务支持模斌 ”撩磐麓黪i ! r e t c o d e s e t t r a n s m o d e ( b o o lb a u t o c o m m i t = t r u e ) ; 黔! 霸i 粼娥强b a u t o c o m m i t 判凝是否自动提交载人工提交模式 繁i r e t c o d e 型( u n s i g n e d s h o r t ) 0 成功 攀! 霪 1 成功,但伴随有提示信息 - 1失败 其它谚参考o d b c 错误说明 s q - l s e t c o n n e e t a t t r 判断b a u t o c o m m i t 的当前值 掇掇b a u t o c o m m i t 的当前值确定使墙自动提交或人工提交模式 ( 孚耱提交筷式支势零务链理) 设麓提交模式 判断执行成功与否,生成相应的错误信息 2 4 4 获得当前的o d b c 环境句柄 麓蕃灞熊蠹鳜;j i h e n v g e t h e n v 0 ; 期灞鳓& 麓熙j ;= “无 j 1 ;_ 黧黝勤魏彰摩h e n v 型( v o i d * ) 无 直接返回当前的o d b c 环境句柄 2 4 5 获得当前的o d b c 连接句柄 ! 霹l 灞夔愿黪鬻 h d b c g e t h d b c 0 ; 攀l 豢麓澎颦躐慧 无 麟鞭潼回罐靠rh d b c 型 ( v o i d * ) 嘲琶脚程g 瑚者幢嚣黼瓣驸,筠蹦“蔬趣焱# 蓦爵i 鞭墓鍪麓蕊獬i 猫麓麓* 蛾a 强 拦靴 薹爨甜;。:一。,。 无 盘o f i 5 j j i 玎删础1 不t 1 m;= ;j ! o 。ih 、? 、:i i 黼# 辨雕b _ - “二v t一 z 一“# z w x ,z 直接返回当前的o d b c 连接旬柄 2 4 6 获得当前连接的数据源名称 誊国旅蔫黝凝j l p c s t r g e t s o u r c e n a m e 0 ; 登觋碾嘞:无 l p c s t r 型( 静态字符串指针) 无 直接返回当前连接的数据源名称 糍濑就麓缎瓤 l p c s t r g e t u s e r l d 0 ; 无i 参擞谴觋一 l p c s t r 型( 静态字符串指针) 囊豫l 鎏玉l l i 藓v ;u ! 。 脯u z 尊够j 矾i 啊,_ - u“圳_ 蠢。# 搬。“、鬻。i “ “2 无 直接返回当前的用户名 2 1 黝参激键觋。 无 - 、一麓;i 錾删z 量j r l p c s t r 型( 静态字符串指针) 昏兴n 加c 揭坐玎, “ 一禹 :? 。 无 直接返回当前连接的用户密码 2 4 9 判断当前是否处于连接状态 誊、;藏教菊锄妊i b o o l i s c o n n e c t e d ( ) ; 鐾i 灞鞘磁囊鼢谴无 鬻l 裂黪鹈 b o o l 型 i 磁一鹫慧辨誊蠢。j t r u e ( 已经连接成功) ,甄黼一鞭嚣蒜蠹 f a l s e ( 没有连接或断开状态) a i 麟2 j i ! j 蠢霹: 蠲威氍i 囊# 戆i 壤嬲缫辍鬻鬻瓣麓黼鞴戮鞣瓣羹婺鬻粼辫i 辫蒸赣辫! ;璺巍鬻勰 无 翟湖舟:撑眉础期f 薯拧,蹦雕l 矬强+ 懿搬髓g 姆趣露髓落溢醢魏& 2 誊0 蛩戮l 群# # 慧i 糍! 赫葡驯粥;挎矧i _ i ;i 搿点搿m z 直接返回当前是否连接的状态值 2 4 1 0 判断当前连接是否支持事务 i 隅爨感黔、 b o o l c a n t r a n s a c t 0 ; * 鎏蚓觋无 强国省b 0 0 l 型 i i 。j i t r u e ( 支持事务) 董霎薹 鞭z 鞭- “嚣: _ f a l s e ( 不支持事务) 一勰国隰c l 据啊! 誊z 。一+ “ 。 ls q l g e t c o n n e c t a t t r is q l s e t c o n n e c t a t t r 型灏统凝瓢越呸;蟛自鼻”i _ * 一、 4 。 | “_ i 。 得到当前事务的提交模式 如果是手动提交,则支持事务。返回t r u e 如果是自动提交,尝试设置成手动提交模式。若设置成功,则支 持事务,将事务提交模式恢复到原来的模式,返回t r u e 否则不支持事务,返回f a l s e :骧4 徭墓j _ 在事务处理上,o d b c 为所有的数据源都模拟自动提交模式,因 此只有支持手动提交模式的数据源才可以认为是支持事务。 2 4 1 l 判断当前连接是否支持对数据源的更新 2 2 羹瓣蓊藤黧荔凳毳鬻黼、 m x e j 0 。n h 辟,僭倒- o “一。j ls q l g e t c o n n e e t a t t r l 璃鬻s q l g e t c o n n e e t a t t r 舔兹餐囊撩荚撼链 判断属性值,若值为s q l m o d e _ r e a do n l y ,鞭g 怒嚣读模式。 返回f a l s e 否鲻,支撩受凝擞终,遨圈t r u e 2 5 其穗: 2 5 t 取消辩莎进行静操俸 隧润激獭篱嫩:j i v o i dc a n c e l ( ) ; 臻蘩滋键$ 蠡。无 縻鞠无 f 葛狸t 驯螂倒鹾f 蒯盘,警”jz 栅* 撇,姑 笤椭燃i 蕊l 黪叠黝携耋剿蕊粼鞲l 慕、豁罐褂 瓣* i 嬲嚣墅簿鞑搽* ? # i 、 ls q l c a n c e l 燃缴埋麓韵峰醚格黠匿冀孽淤i 嚣州粥0 。黼i 瓣童黧;麓焉搿i 鎏篷豁羹鼹慧t 骥麓尊鼋凳二嚣鎏瓣鼙! # l 援嚣蠢;鬟瓣罄耩$ , | 蠢攘诵薅s q l c z c a z e t 玻漆异步遘孬翡撩佟 2 6 错误处理j 黼 l v o i db u i l d o d b c e r r o r ( 1s h o r t 粼醐e t 7 v o i d + h a n d l e , s h o r th a n d t e t y p e ) ; 鎏羹黎鬃i n r e t c o d e ,o d b c 菡数返嘲谯 h a n d l e ,瀑蒙渗鼯密罐镶惠濑键辆 舞i 爱鬻i 糍赫琶 h a n d l e t y p e嚣妥渗瑟窭缮蘩蕊翁每藕类塑 雕;:。t 、一:粼;薛戚无 e 貔群i ! ) 口国a 蠲j i 零;。焉_ _ _ = _ - ,。,+ i 1 薯 瓣 _ _ 嚣j i ;蓬鏊鬻。辘冀l 鞭:4 嬲j 。 ,。二一警 l 无 l 蔫露徽菇罐鼬辫漂氐露持曩矧t 点= 鼎乱,i 盎薹i 。、糍赫强! 强一溅i 黩i 眭蕾一。摄。l 置牲。 。- _ 饕戆往撼遴错最蘩惑豹铸变量 璃瓣g e 粼e x | e 哟爵数褥磷第一个错误( 若发生参个镑谈,需薅 户自行褥扶调用g e t n e x t e r r o r 0 函数褥到下面的锚误1 隧戮i 辫黪囊 此融数搠予生成一个o d b c 调用错误懿详细信息,蠲户可以根攒 l 鞲誊霸! 巍瓣攥1 ;“i 遮藏售憝怼锩谟避努j 量多簿诊赣。 2 , 6 ,2 燕袋个垂定义秘横谈蔷惠溆骰内部调霜】 一2 3 - i ! l 孥骥戆黪i v o i db u i l d e r r o r ( ,i 、;黧糍“舞| 。j s h o r t n r e t c o d e , :,i ;“掣j = 孽赫i * l p c s t r e r r o r m s g ) ; j 霉翼戆鬟簇缀 n r e t c o d e 运强谴,j 墩疑强予稼志镑谈类鼙、严重程度 e r r o r m s g 错误描述倍息 m * j 辩趔停j 无 黼f j ,h ,v- “一u o m _ _ n * + k 。t 一,。5 t-in -i!一 无 初始化描述错误信息的各变量 把e r r o r m s g 中的信息拷贝到m _ s t r e r r o r m s g 数组中,如果信息过 长则j 挂行截断。 ( 调鲻g e t e r r o r m s g 霸数可以得到ms t r e r r o r m s g 数缀中的错误信 惑, 鬓蘸蘩蒸i i 对予翻定义的错误( 非o d b c 调翊错误) ,只有g e t e r r o r m s g 和 g e t e r r o r c o d e 两个函数有意义。 2 6 3 获取产生错误的o d l j c 调用盼返回馕 慧罐淼囊爱嚣? ; r e t c o d e g e t e r r o r c o d e o ; 蒸爹灏謇黝黪i无 瓣i r e t c o d e 型( s i g n e ds h o r t ) 0 成功 戮粪 1 成功毽寄一爨提示售患 一1 严重镑误 无 e 一 :“4 。# n ;”1 _ _ _ ”p v 9 馓“t h q m + m 一。j 一”th ” 壹接逐霾m _ n r e t c o d e 2 6 4 获取错误状态描述字串 i :| 西糯鹧_ 鲤霸。 l p c s t r g e t e r r o r s t a t e 0 ; 纛灞獭警i ! ;1 联i无 ;舞;。 岩麴i 臻j i l p c s t r 型( 静态譬耱串撵赞) 无 t 材,肘s l 。f t _ m o :i ,一 o ) 直接返回ms t r e r r o r s t a t e 2 6 5 获墩错误诊断信息 。“m 。l 、一j 2 4 2 6 6 获取当前错误缎母 匿渔醚萎塞g 嚣囊i n tg e t c u r r e n t e r r o r n u m 0 ; 麓舞瓣游势誊!无 “”“潮张可z 量jii n t 趔 i 溯9 糕黼描谬硒 四_ “ _ ;_ 一:* 一、舞鹫* 群t 黜茹赫麓# 藩i 堪鬻凳辩蛐嚣- - * 两娆m * - 剥“ 无 ,e ,女l 6 z * 焉瓣蚩,i 鞠一。p oj ,一i 一 n j 姑獬,* 辩、鬻g $ = * :;_ d 姆戮一i、h h v 嘣”z “。e 。嚣蝴一! - i直接湛强mn r e e n u m b e r 隧澜谶感鬟鬟 b o o l g e t n e x t e r r o r 0 ; 鬻爱黼瓣i元 鼷 b o o l 型 t r u e ( 成功获得错误) f a l s e ( 没有错谡戏不是o d b c 热型错误1 |s q l g e l d i a g r e e 一_ 。 “c、uvr zc ,- 1 _ t t - ,“一# w “ ”m ¥一一t 一掣z # 、”2 “,“f 一“- 判断魑否o d b c 类捌错误,若不是o d b c 类型锚讽,返回f a l s e 判壤f m _ n r e t c o d e 的德* 若不是s q k 8 u c c e s sm 4 裘示有错误发 生 镶鬻s q l g e t d i a g r e e 媛数褥嚣锫镟穗意鼹备当魏蕊,运窭t r u e 否则,返回f a l s e b o o l i s o d b c e r r o r o ; j 孽灞粼援若囊天糕b o o l 型 t r u e ( 是个o d b c 调用错谈1 false(不是一个odbc调用锚误1 i 删。麟t z ,拄t 一嘏蝌! 、* 峨:二= _ :。,一;i 羔n n = i :。,一、,:! ? 。t - * “、* :、l 71l 秃 f 判断mh a n d l e 是否为n u l l ( 白定义错误m _ h a n d l e 设置为n u l l ) 是n u l l 则返回f a l s e 否则返回t r u e 2 6 1 概述 第三章数据记录集模块c c d b r s t 本模块主耍曩懿是数掇记录嶷的打开,关闭,t 基录集中数掇蟾增、删、编辑、更 耘,记录集中游标弱移渤、定位,记聚集属性豹签询,敬及一鍪鞴韵操 睾4 甜。程实褒 上把它作为熬体设置为个类4 4 1 。 2 模块具体功能的实现 2 1 类的构造及析构函数,以及记录集的打开与关闭,记录集刷新以及列的绑定 2 1 1 构造一个c c d b r s t 对象 j | 旗簸枣骢;c c d b r s t ( c c e n t d b 4p d b = n u l l ) : :参鼗键疆:p d b豢肉迄羰对应鼗器源麴c c e n t d b 对象 _ _ j 洒i 鬣彝1 。无 s q l a l l o c h a n d l e s e t s t m t a t t r 对成员变量进行裙始化 l 分配语句句柄 殴镟语句属性 2 1 , 2 糖秘一个c c d b r s t 薅象 i 躐鞭;旁;鳕! j | ,l c c d b r s t ( ) ; 鬻i 戮蝴鳓黝雏*无 ;掣b 谶潞r 厦鞋;无 炙 如果当前正打开一个数据集则关闭 释放运行过程中动态分配的资源 2 。1 3 抒秀迂录集 l p c s t r p s z s q l k 谢j | _ ii 一曩l,i 。 曩4 。 u i n t u c u r s o r t y p e = s q l _ c u r s o r _ k e y s e td r l v e n , 。 ” :i | t 3 0 0 lb l n i t = f a l s e ) ; 灌一i p s z s q l簧执行的s q l 语句 u c u r s o r t y p e 设警游标类型 b l n i t挣开结采集君燕器进行初始纯 鬻 r e t c o d e 型( u n s i g n e d s h o r t ) 0成功 ;篓溪鋈鬻鬟巢 1成功,但伴随有提示信息 - l 失败 ! 要寨囊;i其它请参考o d b c 错误说鞠 s q l s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论