两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫通用訪問實現(xiàn)方法與流程

文檔序號:12484976閱讀:824來源:國知局
本發(fā)明涉及微電網(wǎng)控制
技術(shù)領(lǐng)域
:,特別是涉及一種用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫通用訪問實現(xiàn)方法。
背景技術(shù)
::微電網(wǎng)是指由分布式電源、儲能裝置、能量轉(zhuǎn)換裝置、負荷、監(jiān)控和保護裝置等組成的小型發(fā)配電系統(tǒng)。微電網(wǎng)是一個能夠?qū)崿F(xiàn)自我控制、保護和管理的自治系統(tǒng),既可以與外部電網(wǎng)并網(wǎng)運行,也可以孤立運行。開發(fā)和延伸微電網(wǎng)能夠充分促進分布式電源與可再生能源的大規(guī)模接入,實現(xiàn)對負荷多種能源形式的高可靠供給,是實現(xiàn)主動式配電網(wǎng)的一種有效方式,使傳統(tǒng)電網(wǎng)向智能電網(wǎng)過渡,近年來在國內(nèi)外得到了大規(guī)模應(yīng)用。微電網(wǎng)監(jiān)控系統(tǒng)是實現(xiàn)微電網(wǎng)的數(shù)據(jù)采集與監(jiān)視控制,保障微電網(wǎng)安全可靠運行必不可少的軟硬件集成系統(tǒng)。在微電網(wǎng)監(jiān)控系統(tǒng)中,微網(wǎng)數(shù)據(jù)模型的建立、微網(wǎng)數(shù)據(jù)的存儲依賴于數(shù)據(jù)庫管理系統(tǒng)。實際應(yīng)用中,根據(jù)微電網(wǎng)規(guī)模大小和用戶需求,數(shù)據(jù)庫可選用大型商用數(shù)據(jù)庫如Oracle,SQLServer等,也可選用小型數(shù)據(jù)庫管理系統(tǒng),如MySQL等,在極個別的情況下,甚至可以將微網(wǎng)模型建立在文件中,脫離數(shù)據(jù)庫管理系統(tǒng)。一般每一種數(shù)據(jù)庫都有各自的API訪問接口,可以針對每一種數(shù)據(jù)庫調(diào)用這些API接口訪問。還有一些通用的數(shù)據(jù)庫訪問方法如ODBC、ADO等,這些方式主要應(yīng)用在Windows平臺下,不具備跨平臺的特征,使用起來也比較繁瑣。技術(shù)實現(xiàn)要素:本發(fā)明的目的是針對現(xiàn)有技術(shù)中存在的技術(shù)缺陷,而提供一種用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫通用訪問實現(xiàn)方法。為實現(xiàn)本發(fā)明的目的所采用的技術(shù)方案是:一種用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫通用訪問實現(xiàn)方法,包括以下步驟,1)定義通用數(shù)據(jù)庫訪問類,其中,所述的通用數(shù)據(jù)庫訪問類封裝定義了多個數(shù)據(jù)庫訪問接口函數(shù);2)針對每一種特定數(shù)據(jù)庫類型,各自實現(xiàn)一個動態(tài)鏈接庫,在動態(tài)鏈接庫中實現(xiàn)各數(shù)據(jù)庫類型對應(yīng)的通用插件函數(shù);3)通用數(shù)據(jù)庫訪問類中的數(shù)據(jù)庫連接函數(shù)根據(jù)傳入的數(shù)據(jù)庫類型,動態(tài)加載該類型數(shù)據(jù)庫對應(yīng)的動態(tài)鏈接庫并以插件形式把通用插件函數(shù)匹配到該數(shù)據(jù)庫類型自身的插件函數(shù)。所述的步驟1)中的數(shù)據(jù)庫訪問接口函數(shù)包括數(shù)據(jù)庫連接函數(shù)、數(shù)據(jù)庫關(guān)閉函數(shù)、獲取數(shù)據(jù)庫類型函數(shù)、執(zhí)行SQL語句以及數(shù)據(jù)庫事務(wù)操作函數(shù)。所述的步驟2)中數(shù)據(jù)庫類型包括Oracle,SQLServer,MySQL,Sybase數(shù)據(jù)庫以及純文件存儲方式。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明采用面向?qū)ο蠹夹g(shù),在分析了各種數(shù)據(jù)庫訪問接口的實現(xiàn)方法后,抽象提煉出通用數(shù)據(jù)庫訪問類,統(tǒng)一對外提供諸如打開數(shù)據(jù)庫、關(guān)閉數(shù)據(jù)庫、執(zhí)行SQL語句、數(shù)據(jù)庫事務(wù)操作等數(shù)據(jù)庫訪問接口函數(shù),以插件的方式在底層針對Oracle,SQLServer,MySQL,Sybase數(shù)據(jù)庫以及純文件方式存儲實現(xiàn)了這些接口函數(shù)的匹配。使得微電網(wǎng)監(jiān)控系統(tǒng)在訪問數(shù)據(jù)庫的時候不必關(guān)心具體的操作系統(tǒng)平臺與數(shù)據(jù)庫類型,只需簡單的調(diào)用這些接口數(shù)據(jù)庫訪問接口函數(shù),根據(jù)配置,通用數(shù)據(jù)庫訪問類對象會自動匹配到各自具體的實現(xiàn)方法。這樣,大大降低了對微電網(wǎng)監(jiān)控軟件編程的難度,提高了軟件的通用性、穩(wěn)定性,同時便于維護,也有很好的可擴展性。具體實施方式以下結(jié)合具體實施例對本發(fā)明作進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫通用訪問實現(xiàn)方法,包括以下步驟,1)定義通用數(shù)據(jù)庫訪問類,其中,所述的通用數(shù)據(jù)庫訪問類封裝定義了多個數(shù)據(jù)庫類型的數(shù)據(jù)庫訪問接口函數(shù),包括數(shù)據(jù)庫連接函數(shù)、數(shù)據(jù)庫關(guān)閉函數(shù)、獲取數(shù)據(jù)庫類型函數(shù)、執(zhí)行SQL語句以及數(shù)據(jù)庫事務(wù)操作函數(shù)等,如下文中的打開與關(guān)閉數(shù)據(jù)庫連接Open()、Close()執(zhí)行SQL語句ExecuteSQL()、Exec()等等。同時,該通用數(shù)據(jù)庫訪問類定義了數(shù)據(jù)庫類型無關(guān)的通用插件函數(shù),如下文中的qs_open(),qs_prepare_sql()等等,這些通用插件函數(shù)在上述數(shù)據(jù)庫訪問接口函數(shù)中被調(diào)用。2)針對每一種數(shù)據(jù)庫類型,各自實現(xiàn)一個動態(tài)鏈接庫,在動態(tài)鏈接庫中實現(xiàn)各數(shù)據(jù)庫類型自己的通用插件函數(shù)如qs_open(),qs_prepare_sql()等等,數(shù)據(jù)庫可為Oracle,SQLServer,MySQL或Sybase數(shù)據(jù)庫等。3)通用數(shù)據(jù)庫訪問類中的數(shù)據(jù)庫訪問接口函數(shù),如Open()接口函數(shù)根據(jù)傳入的數(shù)據(jù)庫類型,動態(tài)加載該類型數(shù)據(jù)庫對應(yīng)的動態(tài)鏈接庫并以插件形式把插件函數(shù)匹配到該數(shù)據(jù)庫類型自身的插件函數(shù)。即,在實際訪問數(shù)據(jù)庫時,聲明通用數(shù)據(jù)庫訪問類的實例,數(shù)據(jù)庫訪問接口函數(shù)根據(jù)傳入數(shù)據(jù)庫類型,調(diào)用其數(shù)據(jù)庫訪問接口函數(shù)即可。本發(fā)明采用面向?qū)ο蠹夹g(shù),在分析了各種數(shù)據(jù)庫訪問接口的實現(xiàn)方法后,抽象提煉出通用數(shù)據(jù)庫訪問類,統(tǒng)一對外提供諸如打開數(shù)據(jù)庫、關(guān)閉數(shù)據(jù)庫、執(zhí)行SQL語句、數(shù)據(jù)庫事務(wù)操作等數(shù)據(jù)庫訪問接口函數(shù),以插件的方式在底層針對Oracle,SQLServer,MySQL,Sybase數(shù)據(jù)庫以及純文件方式存儲實現(xiàn)了這些接口函數(shù)的匹配。使得微電網(wǎng)監(jiān)控系統(tǒng)在訪問數(shù)據(jù)庫的時候不必關(guān)心具體的操作系統(tǒng)平臺與數(shù)據(jù)庫類型,只需簡單的調(diào)用這些接口函數(shù),根據(jù)配置,通用數(shù)據(jù)庫訪問類對象會自動匹配到各自具體的實現(xiàn)方法。這樣,大大降低了對微電網(wǎng)監(jiān)控軟件編程的難度,提高了軟件的通用性、穩(wěn)定性,同時便于維護,也有很好的可擴展性。具體實施方式第一步:確定并實現(xiàn)數(shù)據(jù)庫通用訪問類CQSDBI的數(shù)據(jù)庫訪問接口函數(shù),包括數(shù)據(jù)庫連接、數(shù)據(jù)庫關(guān)閉、執(zhí)行SQL語句、數(shù)據(jù)庫事務(wù)操作等的一般數(shù)據(jù)庫訪問接口函數(shù),實際使用中,只需聲明CQSDBI類的實例,調(diào)用這些數(shù)據(jù)庫訪問接口函數(shù),而無需關(guān)心具體的數(shù)據(jù)庫類型。主要數(shù)據(jù)庫訪問接口函數(shù)如下連接和斷開數(shù)據(jù)庫:boolOpen(constchar*i_pszSrv,constchar*i_pszUser,constchar*i_pszPwd);boolOpen(constchar*i_pszSrv,constchar*i_pszIpAddr,constchar*i_pszDBName,constchar*i_pszUser,constchar*i_pszPwd,constchar*dbType);voidClose(boolbClose=true);判斷數(shù)據(jù)庫是否打開:boolIsOpen()const{returnm_bOpen;}獲取數(shù)據(jù)庫類型:intGetDBType()const{returnm_nDBType;}獲取數(shù)據(jù)源名字:constchar*GetDBName()const{returnm_qsSrcName.GetBuf();}執(zhí)行SQL語句:boolExecuteSQL(constchar*i_pszSqlStr);intExec();判斷數(shù)據(jù)表是否存在boolIsTableExist(constchar*i_szTableName);獲取錯誤號和錯誤字符串:intGetErrorNo();constchar*GetErrorStr();準備SQL語句:boolPrepareSQL(constchar*i_pStringSQL);關(guān)閉本次SQL處理:voidCloseSQL();綁定列:boolBindCol(inti_nColType,inti_nColSize,void*i_pColAddr);綁定參數(shù):boolBindPara(inti_nParaType,inti_nParaSize,void*i_pParaAddr);獲取查詢結(jié)果:boolFetch();是否到了記錄尾:boolIsEnd();開始事務(wù)操作:boolBeginTrans();遞交事務(wù):boolCommit();回滾事務(wù):boolRollback();第二步:在數(shù)據(jù)庫通用訪問類CQSDBI中定義各個數(shù)據(jù)庫類型通用的通用插件函數(shù)。然后在對外開放的public成員函數(shù)中分別調(diào)用上述通用插件函數(shù),即,每一種數(shù)據(jù)庫類型對應(yīng)實現(xiàn)一個動態(tài)鏈接庫,在庫中實現(xiàn)各自的通用插件函數(shù)。在CQSDBI的Open函數(shù)中,根據(jù)傳入的數(shù)據(jù)庫類型,加載這些動態(tài)鏈接庫,把上述通用插件函數(shù)匹配到每一種獨立數(shù)據(jù)庫類型的接口函數(shù)。這些通用插件函數(shù)定義如下:void*(*qs_open)(constchar*,constchar*,constchar*,constchar*,constchar*);void(*qs_close)(constvoid*,bool);bool(*qs_execute_sql)(constvoid*,constchar*);bool(*qs_is_table_exist)(constvoid*,constchar*);int(*qs_get_error_no)(constvoid*);constchar*(*qs_get_error_str)(constvoid*);bool(*qs_prepare_sql)(constvoid*,constchar*);void(*qs_close_sql)(constvoid*);bool(*qs_bind_col)(constvoid*,int,int,void*);bool(*qs_bind_para)(constvoid*,int,int,void*);int(*qs_exec)(constvoid*);bool(*qs_fetch)(constvoid*);bool(*qs_is_end)(constvoid*);bool(*qs_begin_trans)(constvoid*);bool(*qs_commit)(constvoid*);bool(*qs_rollback)(constvoid*);第三步:確定并實現(xiàn)Oracle數(shù)據(jù)庫插件類CQSOracleDBI。根據(jù)Oracle數(shù)據(jù)庫自帶的Oracle調(diào)用接口函數(shù)(OracleCallInterface簡稱OCI)的要求,實現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。第步:確定并實現(xiàn)SQLServer數(shù)據(jù)庫插件類CQSSqlserver。本發(fā)明選用ODBC的技術(shù)要求,實現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。第四步:確定并實現(xiàn)MySQL插件類CQSMysqlDBI。根據(jù)MySQL數(shù)據(jù)庫提供的API訪問接口,實現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。第五步:確定并實現(xiàn)MySQL插件類CQSSybaseDBI。根據(jù)Sybase數(shù)據(jù)庫提供的API訪問接口,實現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。第六步:確定并實現(xiàn)文件方式插件類CQSFileDB。選用csv文件格式存儲數(shù)據(jù),根據(jù)文本文件的一般讀寫方式結(jié)合QT庫,實現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。本發(fā)明實現(xiàn)了上述數(shù)據(jù)庫類型的統(tǒng)一操作,針對其他數(shù)據(jù)庫類型,可以做類似的擴展予以支持,實現(xiàn)了微電網(wǎng)監(jiān)控系統(tǒng)訪問數(shù)據(jù)庫時,可以不必關(guān)心具體的操作系統(tǒng)平臺與數(shù)據(jù)庫類型,只需簡單調(diào)用通用數(shù)據(jù)庫訪問類的各個數(shù)據(jù)庫訪問接口函數(shù)即可完成。具體針對每一種數(shù)據(jù)庫的接口實現(xiàn),由底層插件完成。這樣大大降低了上層軟件編程的復(fù)雜度,具有很好的通用性和穩(wěn)定性。另外,本發(fā)明還支持有效擴展,對暫未包含在插件中的數(shù)據(jù)庫類型,可以根據(jù)通用數(shù)據(jù)庫訪問類接口的要求逐一實現(xiàn),具備良好的擴展性以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出的是,對于本
技術(shù)領(lǐng)域
:的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。當前第1頁1 2 3 當前第1頁1 2 3 
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
内丘县| 通辽市| 南木林县| 岳阳市| 南皮县| 嘉定区| 鹿泉市| 建始县| 鄢陵县| 临泉县| 梁山县| 长垣县| 清徐县| 铜川市| 华坪县| 朝阳县| 天津市| 淮北市| 安庆市| 恭城| 日照市| 龙南县| 双牌县| 岳普湖县| 汾西县| 诏安县| 波密县| 遂宁市| 繁峙县| 吴江市| 宿迁市| 建水县| 商南县| 肇东市| 奇台县| 汪清县| 嘉兴市| 高唐县| 公主岭市| 仪陇县| 兴仁县|