999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

處置程序中的特殊字符

2018-11-08 05:33:20
網絡安全和信息化 2018年1期
關鍵詞:故障

故障現象

筆者軟件編制采用的工具是Borland公司的 Delphi,數據庫采用微軟的Access數據庫。因為涉及下級單位較多,而且因新增項目原因,入庫單位數量還在不斷變化,為此專門編寫了一個單位維護模塊,如圖1所示。

單位維護是一個基礎性的數據維護工作,標準化和準確性要求都很高。為確保錄入信息準確,特別增加了一個單位校驗功能。校驗原理和代碼實現都很簡單,設計思路是將單位表中的所有記錄遍歷一遍,逐一取出單位名稱,通過執行SQL語句進行快速比對,如果有2個或以上記錄,說明單位名稱有重復,生成列表清單供管理人員修訂。就是這么一個簡單的校驗功能卻出現了異常狀況(如圖2),很明顯,列表清單中名稱并不相同的兩個單位被系統認為是兩個相同的單位,赫然顯示在篩查結果中。

圖1 單位維護

圖2 校驗結果

故障分析

問題究竟出在哪里呢?經筆者初步判斷,問題可能來自三個方面,一是程序代碼編制問題;二是數據本身問題;三是數據庫系統兼容問題。順著這個思路,筆者首先查看了校驗功能的主要代碼片斷,如下所示:

從邏輯和語句上看都沒有問題。再看看數據,筆者發現,所有重復單位中都出現有一個字符“〇”,如圖2中所示的“第二〇一醫院”和“第二一〇醫院”。經查,“〇”這個字符的機器內碼為“A996”,是一個特殊漢字,可以在Word中通過“插入→日期和時間”得到(如圖3)。

筆者推測,如果去掉這個字符“〇”,就變成了“第二一醫院”,這時系統不就誤認為是同一個單位了嗎?也就是說,系統在進行SQL比對時,是將這個“〇”字符過濾掉后進行的,所以就查到了兩個相同的單位。為了驗證這一猜測,筆者進入Access軟件,利用其自帶的SQL查詢工具,輸入“第二〇一醫院”、“第二一〇醫院”和“第二一醫院”三個取值條件進行SQL驗證,果不其然,得到的結果均相同(如圖 4)。

圖3 插入“〇”字符

圖4 SQL測試一

與此同時,筆者又對與“〇”(A996)字符外形非常類似的幾個字符,如“○”(A1F0)、“O”(A3CF)、“О”(A7B0)等字符進行了深入研究,發現SQL語句的執行結果均正常。這充分說明,“〇”(A996)字符是一個特殊字符,當遇到如“〇”這種特殊字符時,SQL執行會出現異常,需要我們特別加以注意。

故障解決

找到了問題所在,如何解決這一帶有普遍性而又極具隱蔽性的問題呢?最先想到的也是最簡單直接的辦法,就是將這個特殊字符換掉,比如,可以用阿拉伯數字“0”代替,或者用上文所述的任意一個與它外形相似的字符替代都可以。顯然,這種方案是可行的,也是有效的,但似乎還不是最完美的解決方案。正如前文所述,隨著管理項目數量不斷增加,單位數量也在不斷變化之中,管理人員極有可能再次將這個特殊字符錄入系統。所以,筆者認為,若要從根本上解決這一問題,最終需要從程序端入手,將系統變得更為“健壯”,而不是從用戶端著手,對其使用進行限制,這樣,既能避免“故障”發生,又不會影響用戶的使用習慣。

故障再分析

正是基于以上考慮,筆者重新對代碼進行了分析,可以看到,矛盾的焦點主要在以下SQL語句:

而此語句的關鍵之處在于使用了SQL的“=”關鍵字,筆者想,能不能使用其他替代的SQL語句實現相同的功能呢?答案是肯定的,SQL語句的“Like”關鍵字就可以完美替代。一般的,我們在實現模糊查詢時,會經常使用SQL的“Like”關鍵字,當條件值足夠具體時,其功能與“=”沒有本質區別。

于是,筆者又進入Access軟件,通過SQL查詢工具進行測試(如圖5)。

結果很明顯,SQL關鍵字“Like”的執行效果與關鍵字“=”的執行效果完全相同,還是無法解決特殊字符帶來的困惑。筆者還是不甘心,懷疑可能是Access數據庫的兼容性問題,隨后又在SQL Server數據庫中進行求證,得到的結果仍然相同。到此時,真的是有些灰心了,因為這似乎可以下結論說,Access或者SQL Server這類數據庫對類似“〇”(A996)的特殊字符束手無策了!

冷靜下來后,通過進一步分析突然發現,前面我們所用的SQL查詢工具都是系統自帶的,而自帶的一些輔助工具往往在功能和性能上都會比較弱,所以,僅憑它們的測試結果還不能輕易下定論,還需要采用第三方SQL測試工具進行驗證,或許會有不同的結論呢。

圖5 SQL測試二

圖6 Access查詢分析器

圖7 校驗結果

順著這個思路,使用了一款名為“Access查詢分析器”的第三方SQL工具軟件進行測試。當使用“=”關鍵字進行查詢時,結果和前面一樣,但當用“Like”關鍵字時,得到了我們期望的結果(如圖 6)。

故障最終解決

通過以上分析和測試后,立即將程序代碼進行了修改。即,將代碼行:

代碼編譯后運行,所有帶有特殊字符“〇”(A996)的單位名稱數據順利通過校驗,再無異常出現,故障得到圓滿解決,結果如圖7所示。

經驗總結

通過對這個因特殊字符引起的“程序故障”典型案例的分析,從中可以總結出以下一些經驗,一是在程序設計中,測試環節非常重要,它就是一個出“故障”的環節,絕不能因其簡單而忽視或輕視這一環節;二是在故障排除過程中,不能因一時一事的失敗而氣餒,那樣只會半途而廢、功敗垂成,而應鍥而不舍、堅持不懈,冷靜、客觀、全面地分析故障對象,運用一切技術手段,多角度、多層面不斷由表及里,才能直達病灶,取得成功;三是應多從用戶角度出發,多為用戶著想,樹立用戶至上的理念,這樣才能得到最優解決方案。

猜你喜歡
故障
故障一點通
奔馳R320車ABS、ESP故障燈異常點亮
WKT型可控停車器及其故障處理
基于OpenMP的電力系統并行故障計算實現
電測與儀表(2016年5期)2016-04-22 01:13:50
故障一點通
故障一點通
故障一點通
故障一點通
故障一點通
江淮車故障3例
主站蜘蛛池模板: 毛片在线播放网址| 亚洲中文无码h在线观看| 青青草91视频| 91亚洲精品国产自在现线| 蜜芽国产尤物av尤物在线看| 亚洲精品制服丝袜二区| 久草国产在线观看| 日韩精品亚洲人旧成在线| 少妇高潮惨叫久久久久久| 超清无码熟妇人妻AV在线绿巨人| 国产精品不卡永久免费| 九九九国产| 色爽网免费视频| 夜精品a一区二区三区| 婷婷色中文网| 98超碰在线观看| 国产激情在线视频| 国产高清免费午夜在线视频| 国产手机在线小视频免费观看| 伊在人亚洲香蕉精品播放| 国产一级在线观看www色 | 91无码人妻精品一区| 亚洲an第二区国产精品| 免费一级无码在线网站| 国产精品伦视频观看免费| 欧美色图第一页| 午夜毛片免费观看视频 | 一本一本大道香蕉久在线播放| 亚洲第一黄色网址| 欧美精品v| 99热精品久久| 国产精品极品美女自在线网站| 亚洲黄色成人| 久久黄色小视频| 国产精品香蕉在线| 中文字幕无码制服中字| 亚洲三级成人| 欧美日在线观看| 国产情侣一区| 久久久久亚洲AV成人网站软件| 99免费视频观看| 久久久国产精品免费视频| 亚洲中文无码av永久伊人| 亚洲永久精品ww47国产| 91亚洲免费视频| 波多野结衣亚洲一区| 婷婷色婷婷| 国产成人综合亚洲欧美在| 亚洲国产精品日韩av专区| 九色视频一区| 日本欧美中文字幕精品亚洲| 日韩a级片视频| 婷婷午夜影院| 国产成人永久免费视频| 亚洲综合片| 扒开粉嫩的小缝隙喷白浆视频| 免费看a级毛片| 久草视频一区| 国产成人综合日韩精品无码首页| 亚洲精品动漫| 日韩成人午夜| 亚洲欧洲日产国产无码AV| 免费观看精品视频999| 国产欧美日韩va| 色有码无码视频| 5555国产在线观看| 免费看一级毛片波多结衣| 久久国产拍爱| 国产在线啪| 国产精品视频第一专区| 精品国产一区二区三区在线观看| 国产AV无码专区亚洲A∨毛片| 日韩a级毛片| 欧美激情第一欧美在线| 国产毛片高清一级国语| 日本三区视频| 中文字幕人成人乱码亚洲电影| 高清久久精品亚洲日韩Av| 国产精品va免费视频| 久操中文在线| 欧美激情二区三区| 青青草国产在线视频|