基于ArcGIS10.0和Oracle10g的空間數(shù)據(jù)管理平臺(tái)五(C#開發(fā))-通用工具類
由于在介紹通用數(shù)據(jù)管理模塊功能的時(shí)候用到了許多通用的功能,例如word和excel與DataGridView控件的相互導(dǎo)入導(dǎo)出、寫日志到數(shù)據(jù)庫中等等。為了后面每一篇文章都能清楚的知道每一個(gè)功能具體是怎么實(shí)現(xiàn)的,現(xiàn)在先統(tǒng)一把用到的所有公用功能統(tǒng)一介紹和實(shí)現(xiàn)。由于SqlHelper類,也就是數(shù)據(jù)庫的一些通用操作已經(jīng)在登錄模塊中介紹,就不在重復(fù)介紹了。本篇將相介紹通用工具類CommonTools,由于代碼中有比較詳細(xì)的注釋了,就不詳細(xì)解析具體代碼的功能了。這個(gè)類實(shí)現(xiàn)的功能如下。
1.從DataGridView控件導(dǎo)出數(shù)據(jù)到Word文檔
2.導(dǎo)出DataGridView中的數(shù)據(jù)到excel,實(shí)現(xiàn)代碼如下:
3.導(dǎo)入XML文件的數(shù)據(jù)到Oracle數(shù)據(jù)庫
這個(gè)函數(shù)主要用在元數(shù)據(jù)管理子系統(tǒng),把XML格式的數(shù)據(jù)導(dǎo)入Oracle數(shù)據(jù)庫,這里XML格式的文件是通過一個(gè)XSD文件定義格式得到的,XSD文件就是Xml數(shù)據(jù)格式的約束文件,就是通過它定義XML具體的格式。然而微軟有一個(gè)工具可以根據(jù)這個(gè)XSD文件生成對(duì)應(yīng)的數(shù)據(jù)集類,在我的代碼里就是NewDataSet類。這個(gè)數(shù)據(jù)集類就可以管理對(duì)應(yīng)的格式的所有XML生成的表結(jié)構(gòu)數(shù)據(jù)。這里還需要說明一點(diǎn)的就是管理元數(shù)據(jù)需要一個(gè)單獨(dú)的元數(shù)據(jù)庫,也就是要求重新建立一個(gè)Oracle數(shù)據(jù)庫,但是用C#代碼創(chuàng)建Oracle數(shù)據(jù)庫確實(shí)很有難度,所以我選擇了一種比較巧妙的實(shí)現(xiàn)方式,就是把所有屬于元數(shù)據(jù)的表用前綴標(biāo)明(如metadata_名稱),這樣每次操作元數(shù)據(jù)庫就只需要找到相應(yīng)前綴的表就可以了,具體在元數(shù)據(jù)管理子系統(tǒng)有詳細(xì)介紹實(shí)現(xiàn)方案。
因?yàn)閄ML文件里面包含有圖片數(shù)據(jù)(經(jīng)過64base編碼的字符串表示),所以在處理XML文件需要先處理一下這個(gè)XML文件的圖片字段,才有上面新建一個(gè)臨時(shí)的XML文件,然后用數(shù)據(jù)集類對(duì)象讀入XML數(shù)據(jù),然后刪除臨時(shí)的XML文件。最后還是例如數(shù)據(jù)集適配器來插入元數(shù)據(jù)到Oracle數(shù)據(jù)庫。
4.根據(jù)元數(shù)據(jù)的ID刪除一條元數(shù)據(jù)(從Oracle數(shù)據(jù)庫):
因?yàn)楦鶕?jù)XSD文件解析生成的數(shù)據(jù)庫表有十幾個(gè),所以對(duì)每一個(gè)表單獨(dú)采用事務(wù)操作,就是這十幾個(gè)表其實(shí)是一個(gè)整體,可以完整的表示一條元數(shù)據(jù)(元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù),這里就是描述空間數(shù)據(jù)特性的數(shù)據(jù))。
5.根據(jù)元數(shù)據(jù)的ID從Oracle查詢得到一條元數(shù)據(jù),和刪除一條元數(shù)據(jù)類似,也需要十幾個(gè)表一起操作:
6.導(dǎo)出Oracle數(shù)據(jù)庫的數(shù)據(jù)到XML文件中
7.下面兩個(gè)函數(shù)實(shí)現(xiàn)treeview控件向XML轉(zhuǎn)換,主要用于對(duì)元數(shù)據(jù)的編輯后保存到XML文件中。
8.遍歷XML并實(shí)現(xiàn)向tree控件的轉(zhuǎn)化
9.將DataGridView顯示的內(nèi)容導(dǎo)出Excel
10.excel數(shù)據(jù)導(dǎo)入到DataGridView控件中
11.數(shù)據(jù)備份與恢復(fù)
總結(jié):這些功能放在一個(gè)類中可能不是很合理,但是當(dāng)時(shí)是為了自己編程的方便,只要有多處實(shí)現(xiàn)的一些獨(dú)立的功能,我就加入到這個(gè)類中來,并全部用靜態(tài)的方法實(shí)現(xiàn)。
浙公網(wǎng)安備 33010602011771號(hào)