• / 7
  • 下載費用:30 金幣  

用于微電網監控系統的數據庫通用訪問實現方法.pdf

摘要
申請專利號:

CN201610714565.5

申請日:

2016.08.24

公開號:

CN106257460A

公開日:

2016.12.28

當前法律狀態:

實審

有效性:

審中

法律詳情: 實質審查的生效IPC(主分類):G06F 17/30申請日:20160824|||公開
IPC分類號: G06F17/30 主分類號: G06F17/30
申請人: 天津天大求實電力新技術股份有限公司
發明人: 趙學臣; 李露露; 高振雪
地址: 300000 天津市濱海新區華苑產業區海泰發展六道6號海泰綠色產業基地J-408室
優先權:
專利代理機構: 天津創智天誠知識產權代理事務所(普通合伙) 12214 代理人: 田陽
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201610714565.5

授權公告號:

|||

法律狀態公告日:

2017.01.25|||2016.12.28

法律狀態類型:

實質審查的生效|||公開

摘要

本發明公開了一種用于微電網監控系統的數據庫通用訪問實現方法,包括以下步驟,1)定義通用數據庫訪問類;2)針對每一種特定數據庫類型,各自實現一個動態鏈接庫,在動態鏈接庫中實現各數據庫類型對應的通用插件函數;3)通用數據庫訪問類中的數據庫連接函數根據傳入的數據庫類型,動態加載該類型數據庫對應的動態鏈接庫并以插件形式把通用插件函數匹配到該數據庫類型自身的插件函數。本發明采用面向對象技術,在分析了各種數據庫訪問接口的實現方法后,抽象提煉出通用數據庫訪問類,統一對外提供諸如打開數據庫、關閉數據庫、執行SQL語句、數據庫事務操作等數據庫訪問接口函數,以插件的方式在底層針對各數據庫實現了這些接口函數的匹配。

權利要求書

1.一種用于微電網監控系統的數據庫通用訪問實現方法,其特征在于,包括以下步驟,
1)定義通用數據庫訪問類,其中,所述的通用數據庫訪問類封裝定義了多個數據庫訪
問接口函數;
2)針對每一種特定數據庫類型,各自實現一個動態鏈接庫,在動態鏈接庫中實現各數
據庫類型對應的通用插件函數;
3)通用數據庫訪問類中的數據庫連接函數根據傳入的數據庫類型,動態加載該類型數
據庫對應的動態鏈接庫并以插件形式把通用插件函數匹配到該數據庫類型自身的插件函
數。
2.如權利要求1所述的用于微電網監控系統的數據庫通用訪問實現方法,其特征在于,
所述的步驟1)中的數據庫訪問接口函數包括數據庫連接函數、數據庫關閉函數、獲取數據
庫類型函數、執行SQL語句以及數據庫事務操作函數。
3.如權利要求1所述的用于微電網監控系統的數據庫通用訪問實現方法,其特征在于,
所述的步驟2)中數據庫類型包括Oracle,SQL Server,My SQL,Sybase數據庫以及純文件存
儲方式。

說明書

用于微電網監控系統的數據庫通用訪問實現方法

技術領域

本發明涉及微電網控制技術領域,特別是涉及一種用于微電網監控系統的數據庫
通用訪問實現方法。

背景技術

微電網是指由分布式電源、儲能裝置、能量轉換裝置、負荷、監控和保護裝置等組
成的小型發配電系統。微電網是一個能夠實現自我控制、保護和管理的自治系統,既可以與
外部電網并網運行,也可以孤立運行。開發和延伸微電網能夠充分促進分布式電源與可再
生能源的大規模接入,實現對負荷多種能源形式的高可靠供給,是實現主動式配電網的一
種有效方式,使傳統電網向智能電網過渡,近年來在國內外得到了大規模應用。微電網監控
系統是實現微電網的數據采集與監視控制,保障微電網安全可靠運行必不可少的軟硬件集
成系統。

在微電網監控系統中,微網數據模型的建立、微網數據的存儲依賴于數據庫管理
系統。實際應用中,根據微電網規模大小和用戶需求,數據庫可選用大型商用數據庫如
Oracle,SQL Server等,也可選用小型數據庫管理系統,如My SQL等,在極個別的情況下,甚
至可以將微網模型建立在文件中,脫離數據庫管理系統。一般每一種數據庫都有各自的API
訪問接口,可以針對每一種數據庫調用這些API接口訪問。還有一些通用的數據庫訪問方法
如ODBC、ADO等,這些方式主要應用在Windows平臺下,不具備跨平臺的特征,使用起來也比
較繁瑣。

發明內容

本發明的目的是針對現有技術中存在的技術缺陷,而提供一種用于微電網監控系
統的數據庫通用訪問實現方法。

為實現本發明的目的所采用的技術方案是:

一種用于微電網監控系統的數據庫通用訪問實現方法,包括以下步驟,

1)定義通用數據庫訪問類,其中,所述的通用數據庫訪問類封裝定義了多個數據
庫訪問接口函數;

2)針對每一種特定數據庫類型,各自實現一個動態鏈接庫,在動態鏈接庫中實現
各數據庫類型對應的通用插件函數;

3)通用數據庫訪問類中的數據庫連接函數根據傳入的數據庫類型,動態加 載該
類型數據庫對應的動態鏈接庫并以插件形式把通用插件函數匹配到該數據庫類型自身的
插件函數。

所述的步驟1)中的數據庫訪問接口函數包括數據庫連接函數、數據庫關閉函數、
獲取數據庫類型函數、執行SQL語句以及數據庫事務操作函數。

所述的步驟2)中數據庫類型包括Oracle,SQL Server,My SQL,Sybase數據庫以及
純文件存儲方式。

與現有技術相比,本發明的有益效果是:

本發明采用面向對象技術,在分析了各種數據庫訪問接口的實現方法后,抽象提
煉出通用數據庫訪問類,統一對外提供諸如打開數據庫、關閉數據庫、執行SQL語句、數據庫
事務操作等數據庫訪問接口函數,以插件的方式在底層針對Oracle,SQL Server,My SQL,
Sybase數據庫以及純文件方式存儲實現了這些接口函數的匹配。使得微電網監控系統在訪
問數據庫的時候不必關心具體的操作系統平臺與數據庫類型,只需簡單的調用這些接口數
據庫訪問接口函數,根據配置,通用數據庫訪問類對象會自動匹配到各自具體的實現方法。
這樣,大大降低了對微電網監控軟件編程的難度,提高了軟件的通用性、穩定性,同時便于
維護,也有很好的可擴展性。

具體實施方式

以下結合具體實施例對本發明作進一步詳細說明。應當理解,此處所描述的具體
實施例僅僅用以解釋本發明,并不用于限定本發明。

本發明的用于微電網監控系統的數據庫通用訪問實現方法,包括以下步驟,

1)定義通用數據庫訪問類,其中,所述的通用數據庫訪問類封裝定義了多個數據
庫類型的數據庫訪問接口函數,包括數據庫連接函數、數據庫關閉函數、獲取數據庫類型函
數、執行SQL語句以及數據庫事務操作函數等,如下文中的打開與關閉數據庫連接Open()、
Close()執行SQL語句ExecuteSQL()、Exec()等等。同時,該通用數據庫訪問類定義了數據庫
類型無關的通用插件函數,如下文中的qs_open(),qs_prepare_sql()等等,這些通用插件
函數在上述數據庫訪問接口函數中被調用。

2)針對每一種數據庫類型,各自實現一個動態鏈接庫,在動態鏈接庫中實現各數
據庫類型自己的通用插件函數如qs_open(),qs_prepare_sql()等等,數據庫可為Oracle,
SQL Server,My SQL或Sybase數據庫等。

3)通用數據庫訪問類中的數據庫訪問接口函數,如Open()接口函數根據傳 入的
數據庫類型,動態加載該類型數據庫對應的動態鏈接庫并以插件形式把插件函數匹配到該
數據庫類型自身的插件函數。

即,在實際訪問數據庫時,聲明通用數據庫訪問類的實例,數據庫訪問接口函數根
據傳入數據庫類型,調用其數據庫訪問接口函數即可。

本發明采用面向對象技術,在分析了各種數據庫訪問接口的實現方法后,抽象提
煉出通用數據庫訪問類,統一對外提供諸如打開數據庫、關閉數據庫、執行SQL語句、數據庫
事務操作等數據庫訪問接口函數,以插件的方式在底層針對Oracle,SQL Server,My SQL,
Sybase數據庫以及純文件方式存儲實現了這些接口函數的匹配。使得微電網監控系統在訪
問數據庫的時候不必關心具體的操作系統平臺與數據庫類型,只需簡單的調用這些接口函
數,根據配置,通用數據庫訪問類對象會自動匹配到各自具體的實現方法。這樣,大大降低
了對微電網監控軟件編程的難度,提高了軟件的通用性、穩定性,同時便于維護,也有很好
的可擴展性。

具體實施方式


第一步:確定并實現數據庫通用訪問類CQSDBI的數據庫訪問接口函數,包括數據
庫連接、數據庫關閉、執行SQL語句、數據庫事務操作等的一般數據庫訪問接口函數,實際使
用中,只需聲明CQSDBI類的實例,調用這些數據庫訪問接口函數,而無需關心具體的數據庫
類型。

主要數據庫訪問接口函數如下

連接和斷開數據庫:

bool Open(const char*i_pszSrv,const char*i_pszUser,const char*i_
pszPwd);

bool Open(const char*i_pszSrv,const char*i_pszIpAddr,const char*i_
pszDBName,const char*i_pszUser,const char*i_pszPwd,const char*dbType);

void Close(bool bClose=true);

判斷數據庫是否打開:

bool IsOpen()const{return m_bOpen;}

獲取數據庫類型:

int GetDBType()const{return m_nDBType;}

獲取數據源名字:const char*GetDBName()const{return m_qsSrcName.GetBuf
();}

執行SQL語句:

bool ExecuteSQL(const char*i_pszSqlStr);

int Exec();

判斷數據表是否存在

bool IsTableExist(const char*i_szTableName);

獲取錯誤號和錯誤字符串:

int GetErrorNo();

const char*GetErrorStr();

準備SQL語句:

bool PrepareSQL(const char*i_pStringSQL);

關閉本次SQL處理:

void CloseSQL();

綁定列:

bool BindCol(int i_nColType,int i_nColSize,void*i_pColAddr);

綁定參數:

bool BindPara(int i_nParaType,int i_nParaSize,void*i_pParaAddr);

獲取查詢結果:

bool Fetch();

是否到了記錄尾:

bool IsEnd();

開始事務操作:

bool BeginTrans();

遞交事務:

bool Commit();

回滾事務:

bool Rollback();

第二步:在數據庫通用訪問類CQSDBI中定義各個數據庫類型通用的通用插件函
數。然后在對外開放的public成員函數中分別調用上述通用插件函數,即,每一種數據庫類
型對應實現一個動態鏈接庫,在庫中實現各自的通用插件函數。 在CQSDBI的Open函數中,
根據傳入的數據庫類型,加載這些動態鏈接庫,把上述通用插件函數匹配到每一種獨立數
據庫類型的接口函數。

這些通用插件函數定義如下:

void*(*qs_open)(const char*,const char*,const char*,const char*,const
char*);

void(*qs_close)(const void*,bool);

bool(*qs_execute_sql)(const void*,const char*);

bool(*qs_is_table_exist)(const void*,const char*);

int(*qs_get_error_no)(const void*);

const char*(*qs_get_error_str)(const void*);

bool(*qs_prepare_sql)(const void*,const char*);

void(*qs_close_sql)(const void*);

bool(*qs_bind_col)(const void*,int,int,void*);

bool(*qs_bind_para)(const void*,int,int,void*);

int(*qs_exec)(const void*);

bool(*qs_fetch)(const void*);

bool(*qs_is_end)(const void*);

bool(*qs_begin_trans)(const void*);

bool(*qs_commit)(const void*);

bool(*qs_rollback)(const void*);

第三步:確定并實現Oracle數據庫插件類CQSOracleDBI。根據Oracle數據庫自帶
的Oracle調用接口函數(Oracle Call Interface簡稱OCI)的要求,實現類似上述CQSDBI的
通用插件函數與插件函數的匹配。

第步:確定并實現SQL Server數據庫插件類CQSSqlserver。本發明選用ODBC的技
術要求,實現類似上述CQSDBI的通用插件函數與插件函數的匹配。

第四步:確定并實現My SQL插件類CQSMysqlDBI。根據My SQL數據庫提供的API訪
問接口,實現類似上述CQSDBI的通用插件函數與插件函數的匹配。

第五步:確定并實現My SQL插件類CQSSybaseDBI。根據Sybase數據庫提供的API訪
問接口,實現類似上述CQSDBI的通用插件函數與插件函數的匹配。

第六步:確定并實現文件方式插件類CQSFi leDB。選用csv文件格式存儲數據,根
據文本文件的一般讀寫方式結合QT庫,實現類似上述CQSDBI的通用 插件函數與插件函數
的匹配。

本發明實現了上述數據庫類型的統一操作,針對其他數據庫類型,可以做類似的
擴展予以支持,實現了微電網監控系統訪問數據庫時,可以不必關心具體的操作系統平臺
與數據庫類型,只需簡單調用通用數據庫訪問類的各個數據庫訪問接口函數即可完成。具
體針對每一種數據庫的接口實現,由底層插件完成。這樣大大降低了上層軟件編程的復雜
度,具有很好的通用性和穩定性。另外,本發明還支持有效擴展,對暫未包含在插件中的數
據庫類型,可以根據通用數據庫訪問類接口的要求逐一實現,具備良好的擴展性

以上所述僅是本發明的優選實施方式,應當指出的是,對于本技術領域的普通技
術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾
也應視為本發明的保護范圍。

關 鍵 詞:
用于 電網 監控 系統 數據庫 通用 訪問 實現 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:用于微電網監控系統的數據庫通用訪問實現方法.pdf
鏈接地址:http://www.rgyfuv.icu/p-6100792.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图