欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

文檔序號(hào):12484976閱讀:823來源:國(guó)知局
本發(fā)明涉及微電網(wǎng)控制
技術(shù)領(lǐng)域
:,特別是涉及一種用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫(kù)通用訪問實(shí)現(xiàn)方法。
背景技術(shù)
::微電網(wǎng)是指由分布式電源、儲(chǔ)能裝置、能量轉(zhuǎn)換裝置、負(fù)荷、監(jiān)控和保護(hù)裝置等組成的小型發(fā)配電系統(tǒng)。微電網(wǎng)是一個(gè)能夠?qū)崿F(xiàn)自我控制、保護(hù)和管理的自治系統(tǒng),既可以與外部電網(wǎng)并網(wǎng)運(yùn)行,也可以孤立運(yùn)行。開發(fā)和延伸微電網(wǎng)能夠充分促進(jìn)分布式電源與可再生能源的大規(guī)模接入,實(shí)現(xiàn)對(duì)負(fù)荷多種能源形式的高可靠供給,是實(shí)現(xiàn)主動(dòng)式配電網(wǎng)的一種有效方式,使傳統(tǒng)電網(wǎng)向智能電網(wǎng)過渡,近年來在國(guó)內(nèi)外得到了大規(guī)模應(yīng)用。微電網(wǎng)監(jiān)控系統(tǒng)是實(shí)現(xiàn)微電網(wǎng)的數(shù)據(jù)采集與監(jiān)視控制,保障微電網(wǎng)安全可靠運(yùn)行必不可少的軟硬件集成系統(tǒng)。在微電網(wǎng)監(jiān)控系統(tǒng)中,微網(wǎng)數(shù)據(jù)模型的建立、微網(wǎng)數(shù)據(jù)的存儲(chǔ)依賴于數(shù)據(jù)庫(kù)管理系統(tǒng)。實(shí)際應(yīng)用中,根據(jù)微電網(wǎng)規(guī)模大小和用戶需求,數(shù)據(jù)庫(kù)可選用大型商用數(shù)據(jù)庫(kù)如Oracle,SQLServer等,也可選用小型數(shù)據(jù)庫(kù)管理系統(tǒng),如MySQL等,在極個(gè)別的情況下,甚至可以將微網(wǎng)模型建立在文件中,脫離數(shù)據(jù)庫(kù)管理系統(tǒng)。一般每一種數(shù)據(jù)庫(kù)都有各自的API訪問接口,可以針對(duì)每一種數(shù)據(jù)庫(kù)調(diào)用這些API接口訪問。還有一些通用的數(shù)據(jù)庫(kù)訪問方法如ODBC、ADO等,這些方式主要應(yīng)用在Windows平臺(tái)下,不具備跨平臺(tái)的特征,使用起來也比較繁瑣。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)缺陷,而提供一種用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫(kù)通用訪問實(shí)現(xiàn)方法。為實(shí)現(xiàn)本發(fā)明的目的所采用的技術(shù)方案是:一種用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫(kù)通用訪問實(shí)現(xiàn)方法,包括以下步驟,1)定義通用數(shù)據(jù)庫(kù)訪問類,其中,所述的通用數(shù)據(jù)庫(kù)訪問類封裝定義了多個(gè)數(shù)據(jù)庫(kù)訪問接口函數(shù);2)針對(duì)每一種特定數(shù)據(jù)庫(kù)類型,各自實(shí)現(xiàn)一個(gè)動(dòng)態(tài)鏈接庫(kù),在動(dòng)態(tài)鏈接庫(kù)中實(shí)現(xiàn)各數(shù)據(jù)庫(kù)類型對(duì)應(yīng)的通用插件函數(shù);3)通用數(shù)據(jù)庫(kù)訪問類中的數(shù)據(jù)庫(kù)連接函數(shù)根據(jù)傳入的數(shù)據(jù)庫(kù)類型,動(dòng)態(tài)加載該類型數(shù)據(jù)庫(kù)對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)并以插件形式把通用插件函數(shù)匹配到該數(shù)據(jù)庫(kù)類型自身的插件函數(shù)。所述的步驟1)中的數(shù)據(jù)庫(kù)訪問接口函數(shù)包括數(shù)據(jù)庫(kù)連接函數(shù)、數(shù)據(jù)庫(kù)關(guān)閉函數(shù)、獲取數(shù)據(jù)庫(kù)類型函數(shù)、執(zhí)行SQL語句以及數(shù)據(jù)庫(kù)事務(wù)操作函數(shù)。所述的步驟2)中數(shù)據(jù)庫(kù)類型包括Oracle,SQLServer,MySQL,Sybase數(shù)據(jù)庫(kù)以及純文件存儲(chǔ)方式。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明采用面向?qū)ο蠹夹g(shù),在分析了各種數(shù)據(jù)庫(kù)訪問接口的實(shí)現(xiàn)方法后,抽象提煉出通用數(shù)據(jù)庫(kù)訪問類,統(tǒng)一對(duì)外提供諸如打開數(shù)據(jù)庫(kù)、關(guān)閉數(shù)據(jù)庫(kù)、執(zhí)行SQL語句、數(shù)據(jù)庫(kù)事務(wù)操作等數(shù)據(jù)庫(kù)訪問接口函數(shù),以插件的方式在底層針對(duì)Oracle,SQLServer,MySQL,Sybase數(shù)據(jù)庫(kù)以及純文件方式存儲(chǔ)實(shí)現(xiàn)了這些接口函數(shù)的匹配。使得微電網(wǎng)監(jiān)控系統(tǒng)在訪問數(shù)據(jù)庫(kù)的時(shí)候不必關(guān)心具體的操作系統(tǒng)平臺(tái)與數(shù)據(jù)庫(kù)類型,只需簡(jiǎn)單的調(diào)用這些接口數(shù)據(jù)庫(kù)訪問接口函數(shù),根據(jù)配置,通用數(shù)據(jù)庫(kù)訪問類對(duì)象會(huì)自動(dòng)匹配到各自具體的實(shí)現(xiàn)方法。這樣,大大降低了對(duì)微電網(wǎng)監(jiān)控軟件編程的難度,提高了軟件的通用性、穩(wěn)定性,同時(shí)便于維護(hù),也有很好的可擴(kuò)展性。具體實(shí)施方式以下結(jié)合具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的用于微電網(wǎng)監(jiān)控系統(tǒng)的數(shù)據(jù)庫(kù)通用訪問實(shí)現(xiàn)方法,包括以下步驟,1)定義通用數(shù)據(jù)庫(kù)訪問類,其中,所述的通用數(shù)據(jù)庫(kù)訪問類封裝定義了多個(gè)數(shù)據(jù)庫(kù)類型的數(shù)據(jù)庫(kù)訪問接口函數(shù),包括數(shù)據(jù)庫(kù)連接函數(shù)、數(shù)據(jù)庫(kù)關(guān)閉函數(shù)、獲取數(shù)據(jù)庫(kù)類型函數(shù)、執(zhí)行SQL語句以及數(shù)據(jù)庫(kù)事務(wù)操作函數(shù)等,如下文中的打開與關(guān)閉數(shù)據(jù)庫(kù)連接Open()、Close()執(zhí)行SQL語句ExecuteSQL()、Exec()等等。同時(shí),該通用數(shù)據(jù)庫(kù)訪問類定義了數(shù)據(jù)庫(kù)類型無關(guān)的通用插件函數(shù),如下文中的qs_open(),qs_prepare_sql()等等,這些通用插件函數(shù)在上述數(shù)據(jù)庫(kù)訪問接口函數(shù)中被調(diào)用。2)針對(duì)每一種數(shù)據(jù)庫(kù)類型,各自實(shí)現(xiàn)一個(gè)動(dòng)態(tài)鏈接庫(kù),在動(dòng)態(tài)鏈接庫(kù)中實(shí)現(xiàn)各數(shù)據(jù)庫(kù)類型自己的通用插件函數(shù)如qs_open(),qs_prepare_sql()等等,數(shù)據(jù)庫(kù)可為Oracle,SQLServer,MySQL或Sybase數(shù)據(jù)庫(kù)等。3)通用數(shù)據(jù)庫(kù)訪問類中的數(shù)據(jù)庫(kù)訪問接口函數(shù),如Open()接口函數(shù)根據(jù)傳入的數(shù)據(jù)庫(kù)類型,動(dòng)態(tài)加載該類型數(shù)據(jù)庫(kù)對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)并以插件形式把插件函數(shù)匹配到該數(shù)據(jù)庫(kù)類型自身的插件函數(shù)。即,在實(shí)際訪問數(shù)據(jù)庫(kù)時(shí),聲明通用數(shù)據(jù)庫(kù)訪問類的實(shí)例,數(shù)據(jù)庫(kù)訪問接口函數(shù)根據(jù)傳入數(shù)據(jù)庫(kù)類型,調(diào)用其數(shù)據(jù)庫(kù)訪問接口函數(shù)即可。本發(fā)明采用面向?qū)ο蠹夹g(shù),在分析了各種數(shù)據(jù)庫(kù)訪問接口的實(shí)現(xiàn)方法后,抽象提煉出通用數(shù)據(jù)庫(kù)訪問類,統(tǒng)一對(duì)外提供諸如打開數(shù)據(jù)庫(kù)、關(guān)閉數(shù)據(jù)庫(kù)、執(zhí)行SQL語句、數(shù)據(jù)庫(kù)事務(wù)操作等數(shù)據(jù)庫(kù)訪問接口函數(shù),以插件的方式在底層針對(duì)Oracle,SQLServer,MySQL,Sybase數(shù)據(jù)庫(kù)以及純文件方式存儲(chǔ)實(shí)現(xiàn)了這些接口函數(shù)的匹配。使得微電網(wǎng)監(jiān)控系統(tǒng)在訪問數(shù)據(jù)庫(kù)的時(shí)候不必關(guān)心具體的操作系統(tǒng)平臺(tái)與數(shù)據(jù)庫(kù)類型,只需簡(jiǎn)單的調(diào)用這些接口函數(shù),根據(jù)配置,通用數(shù)據(jù)庫(kù)訪問類對(duì)象會(huì)自動(dòng)匹配到各自具體的實(shí)現(xiàn)方法。這樣,大大降低了對(duì)微電網(wǎng)監(jiān)控軟件編程的難度,提高了軟件的通用性、穩(wěn)定性,同時(shí)便于維護(hù),也有很好的可擴(kuò)展性。具體實(shí)施方式第一步:確定并實(shí)現(xiàn)數(shù)據(jù)庫(kù)通用訪問類CQSDBI的數(shù)據(jù)庫(kù)訪問接口函數(shù),包括數(shù)據(jù)庫(kù)連接、數(shù)據(jù)庫(kù)關(guān)閉、執(zhí)行SQL語句、數(shù)據(jù)庫(kù)事務(wù)操作等的一般數(shù)據(jù)庫(kù)訪問接口函數(shù),實(shí)際使用中,只需聲明CQSDBI類的實(shí)例,調(diào)用這些數(shù)據(jù)庫(kù)訪問接口函數(shù),而無需關(guān)心具體的數(shù)據(jù)庫(kù)類型。主要數(shù)據(jù)庫(kù)訪問接口函數(shù)如下連接和斷開數(shù)據(jù)庫(kù):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ù)庫(kù)是否打開:boolIsOpen()const{returnm_bOpen;}獲取數(shù)據(jù)庫(kù)類型: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);獲取錯(cuò)誤號(hào)和錯(cuò)誤字符串:intGetErrorNo();constchar*GetErrorStr();準(zhǔn)備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ù)庫(kù)通用訪問類CQSDBI中定義各個(gè)數(shù)據(jù)庫(kù)類型通用的通用插件函數(shù)。然后在對(duì)外開放的public成員函數(shù)中分別調(diào)用上述通用插件函數(shù),即,每一種數(shù)據(jù)庫(kù)類型對(duì)應(yīng)實(shí)現(xiàn)一個(gè)動(dòng)態(tài)鏈接庫(kù),在庫(kù)中實(shí)現(xiàn)各自的通用插件函數(shù)。在CQSDBI的Open函數(shù)中,根據(jù)傳入的數(shù)據(jù)庫(kù)類型,加載這些動(dòng)態(tài)鏈接庫(kù),把上述通用插件函數(shù)匹配到每一種獨(dú)立數(shù)據(jù)庫(kù)類型的接口函數(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*);第三步:確定并實(shí)現(xiàn)Oracle數(shù)據(jù)庫(kù)插件類CQSOracleDBI。根據(jù)Oracle數(shù)據(jù)庫(kù)自帶的Oracle調(diào)用接口函數(shù)(OracleCallInterface簡(jiǎn)稱OCI)的要求,實(shí)現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。第步:確定并實(shí)現(xiàn)SQLServer數(shù)據(jù)庫(kù)插件類CQSSqlserver。本發(fā)明選用ODBC的技術(shù)要求,實(shí)現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。第四步:確定并實(shí)現(xiàn)MySQL插件類CQSMysqlDBI。根據(jù)MySQL數(shù)據(jù)庫(kù)提供的API訪問接口,實(shí)現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。第五步:確定并實(shí)現(xiàn)MySQL插件類CQSSybaseDBI。根據(jù)Sybase數(shù)據(jù)庫(kù)提供的API訪問接口,實(shí)現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。第六步:確定并實(shí)現(xiàn)文件方式插件類CQSFileDB。選用csv文件格式存儲(chǔ)數(shù)據(jù),根據(jù)文本文件的一般讀寫方式結(jié)合QT庫(kù),實(shí)現(xiàn)類似上述CQSDBI的通用插件函數(shù)與插件函數(shù)的匹配。本發(fā)明實(shí)現(xiàn)了上述數(shù)據(jù)庫(kù)類型的統(tǒng)一操作,針對(duì)其他數(shù)據(jù)庫(kù)類型,可以做類似的擴(kuò)展予以支持,實(shí)現(xiàn)了微電網(wǎng)監(jiān)控系統(tǒng)訪問數(shù)據(jù)庫(kù)時(shí),可以不必關(guān)心具體的操作系統(tǒng)平臺(tái)與數(shù)據(jù)庫(kù)類型,只需簡(jiǎn)單調(diào)用通用數(shù)據(jù)庫(kù)訪問類的各個(gè)數(shù)據(jù)庫(kù)訪問接口函數(shù)即可完成。具體針對(duì)每一種數(shù)據(jù)庫(kù)的接口實(shí)現(xiàn),由底層插件完成。這樣大大降低了上層軟件編程的復(fù)雜度,具有很好的通用性和穩(wěn)定性。另外,本發(fā)明還支持有效擴(kuò)展,對(duì)暫未包含在插件中的數(shù)據(jù)庫(kù)類型,可以根據(jù)通用數(shù)據(jù)庫(kù)訪問類接口的要求逐一實(shí)現(xiàn),具備良好的擴(kuò)展性以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出的是,對(duì)于本
技術(shù)領(lǐng)域
:的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
云南省| 乐亭县| 蒙阴县| 图们市| 全南县| 四平市| 永吉县| 勐海县| 太湖县| 安宁市| 遂溪县| 镇安县| 时尚| 龙泉市| 东源县| 岳阳县| 桐柏县| 海林市| 沂源县| 建水县| 赤壁市| 太康县| 商都县| 肃北| 蚌埠市| 巴东县| 内江市| 留坝县| 康乐县| 金平| 米林县| 宁明县| 万宁市| 舟山市| 娄烦县| 日喀则市| 武清区| 铅山县| 沙雅县| 洞头县| 临夏市|