賈思楊,李 家
(遼寧師范大學 城市與環(huán)境學院,遼寧 大連 116029)
?
列模板技術(shù)在Oracle中的應用與實現(xiàn)
賈思楊,李 家
(遼寧師范大學 城市與環(huán)境學院,遼寧 大連 116029)
傳統(tǒng)的Oracle數(shù)據(jù)庫采用自帶的SQL*PLUS與用戶交互,基于cmd的這種交互方式需要繁雜的口令來支撐,對于初學者存在一定的困難,于是很多用戶選擇更加直觀的PLSQL Developer,這種圖形化工具給用戶帶來了更好的交互體驗。本文在PLSQL Developer集成開發(fā)環(huán)境中使用通用的列模板技術(shù),進一步提升數(shù)據(jù)庫的交互操作性,易于掌握和使用,從而更好地服務客戶。
數(shù)據(jù)庫;集成開發(fā);列模板;DevExpress ASPxGridView
Oracle數(shù)據(jù)庫是目前世界上使用最為廣泛的數(shù)據(jù)庫管理系統(tǒng)之一,作為一個通用的數(shù)據(jù)庫,它具有完整的數(shù)據(jù)管理功能;作為一個關(guān)系數(shù)據(jù)庫,它是一個完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫,它實現(xiàn)了分布式處理功能[1]。從Oracle 11g開始,取消了客戶端形式的管理界面,只有網(wǎng)頁形式的dbconsole,對于Oracle的初學者而言,操作Oracle自帶的SQL*PLUS需要掌握大量的數(shù)據(jù)庫口令,因此很多人選擇借助第三方軟件PLSQL Developer,以圖形界面工具的形式操作數(shù)據(jù)庫。
PLSQL Developer是一個集成開發(fā)環(huán)境,專門面向Oracle數(shù)據(jù)庫存儲程序單元的開發(fā)。使用PL/SQL Profiler可以瀏覽每一執(zhí)行的PL/SQL代碼行的時序信息,更進一步,還可以自動獲取所執(zhí)行的SQL語句和PL/SQL程序設計信息[2]。在PLSQL Developer中使用基于DevExpress的列模板技術(shù),可以帶給用戶耳目一新的交互體驗,進一步提升數(shù)據(jù)庫的交互操作性,易于掌握和使用,從而更好地服務客戶。
DevExpress是一流的控件套包產(chǎn)品。它功能強大,是.NET基礎控件擴展包,可以快速開發(fā)出專業(yè)、強大的應用程序[3]。此外,可以采用DevExpress自帶的主題模板,進一步完善和美化交互界面,達到更好的使用效果。
系統(tǒng)基于B/S架構(gòu),采用C#和Javascript作為主要開發(fā)語言,Visual Studio 2013.NET作為開發(fā)環(huán)境,融合AJAX開發(fā)技術(shù),集成DevExpress開發(fā)控件,是一種面向Oracle數(shù)據(jù)庫的模塊式開發(fā)模式。系統(tǒng)框架圖見圖1。
圖1 系統(tǒng)框架圖
1.1 編輯列的設定
傳統(tǒng)方式基于PLSQL Developer的對于Oracle的數(shù)據(jù)操作采用圖形界面,使用語句控制,本系統(tǒng)在列模板中直接嵌入編輯列,在編輯列中可以針對數(shù)據(jù)庫進行增、刪、改等數(shù)據(jù)操作,從而簡化操作步驟。對于編輯列的設定應在綁定數(shù)據(jù)庫時直接完成,主要代碼如下:
ASPxGridView1.SettingsEditing.Mode = GridViewEditingMode.EditForm;
GridViewDataDateColumn dateCol = new GridViewDataDateColumn();
ASPxGridView1.Columns.Add(dateCol);
編輯列添加完成之后,只需要在增、刪、改對應的服務器端事件中寫入對應的代碼,即可實現(xiàn)對應數(shù)據(jù)庫的編輯操作。另外,可以在服務器端寫入一個漢化方法,這樣可以將New,Insert,Delete直接漢化為增刪改操作。
增加了編輯列并漢化之后的列模板如表1所示。
表1 增加了編輯列并漢化之后的列模板
1.2 列模板主題的使用
在DevExpress中提供了近20種主題模式,可以根據(jù)不同用戶的不同需求采用不同的主題風格,從而改觀傳統(tǒng)數(shù)據(jù)庫列模板單調(diào)的使用效果,為用戶帶來更好的交互體驗。
在已經(jīng)嵌入DevExpress的Visual Studio 2013中啟動ASP.NET Theme Deployer,將選好的主題模板保存在系統(tǒng)根目錄下(這里以Youthful主題模板為例),重新生成解決方案后,需要在Web.config文件中加入主題模板,同時在客戶端加入模板引用,主要代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Theme="Youthful"%>
在此主題列模板基礎上,還可以設計方法實現(xiàn)高亮突出顯示鼠標選擇列的使用效果,主要代碼如下:
function onMouseOver(row) {
oldRow.className = oldCss;
oldRow.style.backgroundColor = oldBackgroundColor;
oldBackgroundColor = row.style.backgroundColor;
oldCss = row.className;
row.style.backgroundColor = "";
row.className = newCss;
oldRow = row;
}
1.3 數(shù)據(jù)庫模型構(gòu)建的優(yōu)化
在Visual Studio 2013中連接數(shù)據(jù)庫時可以在瀏覽器端自動生成增、刪、改等數(shù)據(jù)庫編輯代碼,這些在客戶端自動生成的代碼會以數(shù)據(jù)庫中對應的表結(jié)構(gòu)為基礎,但在有些時候客戶會有新的需求,如果表結(jié)構(gòu)發(fā)生變化,這些代碼就會失效。為了追求更可靠的交互模式,可以對這種自動模型構(gòu)建方式進行優(yōu)化,具體方式是注釋在客戶端自動生成的代碼,轉(zhuǎn)而通過在服務器端書寫代碼控制客戶端的效果實現(xiàn),這種方法的好處在于可以根據(jù)具體需求來實現(xiàn)效果,減少數(shù)據(jù)的冗余,提升系統(tǒng)運行速度。
1.4 AJAX技術(shù)在列模板中的使用
AJAX相當于在用戶和服務器之間增加一個中間層,使用戶操作和服務器響應異步化。它不是將所有的用戶請求都提交給服務器處理,內(nèi)存中的數(shù)據(jù)編輯、頁面導航、數(shù)據(jù)校驗這些不需要重新載入整個界面的需求可以交給AJAX引擎來執(zhí)行,只有確實需要從服務器讀取新數(shù)據(jù)時,再由AJAX引擎向服務器發(fā)出一個異步請求[4]。所以用戶無需等待/請求響應,可以進行其他的操作[5]。
DevExpress控件將AJAX技術(shù)與ASP.NET編程模型無縫集成,為Web應用程序中的客戶端腳本和服務器語言之間架起了一座橋梁,實現(xiàn)了異步局部更新和定時刷新,從而減少了冗余數(shù)據(jù)的傳輸,減輕了服務器的負擔,避免了白屏現(xiàn)象[5]。
這里需要注意一點,在瀏覽器端的事件方法里需要將服務器端進程設置為false,方可達到AJAX無需等待/請求響應的效果,具體代碼如下:
function onclick(s, e) {
e.processOnServer = false;
}
1.5 數(shù)據(jù)庫子表超級鏈接
在數(shù)據(jù)庫中常存在一個數(shù)據(jù)表的子表,如果在主表和子表之間反復地切換,勢必會降低工作的效率,同時也加大了數(shù)據(jù)庫誤操作的幾率。本系統(tǒng)中在DevExpress控件的ASPxGridView中嵌入一個小窗口的表空間,通過在主表中將與子表對應的字段建立成超級鏈接的方式,直接通過主表訪問子表,并且這種訪問是基于AJAX技術(shù)的,擁有很好的交互效果。主要代碼如下:
HtmlIframe iframe1 = ASPxGridView1.FindDetailRowTemplateControl(e.VisibleIndex, "iframe1") as HtmlIframe;
object obj = ASPxGridView1.GetRowValues(e.VisibleIndex, "DEPTNO");
iframe1.Src = "Default2.aspx?deptno=" + obj;
建立在主表中訪問子表的列模板效果如圖2所示,在主表中點擊DEPTNO為20的超級鏈接,即可在子表中將所有DEPTNO為20的信息顯示出來。
本系統(tǒng)基于DevExpress ASPxGridView控件的列模板技術(shù)實現(xiàn),打破了傳統(tǒng)列模板的使用方式,表現(xiàn)力更豐富;通過簡單點擊就可以對每個任務塊進行交互操作,克服了
圖2 在主表中訪問子表
以往B/S模式下的列模板只能看不能交互操作的弊病,開發(fā)了帶有強大AJAX功能的應用程序,實現(xiàn)了異步局部更新和定時刷新,避免了整頁刷新帶來的冗余數(shù)據(jù)傳輸以及白屏問題,減輕了服務器負擔,提供了更加友好的交互界面。根據(jù)本文給出的實現(xiàn)方法,可以很容易地采用ASP.NET 中的Gridview中的模板技術(shù)實現(xiàn),或利用其他開發(fā)平臺中的相關(guān)技術(shù)實現(xiàn)[6]。
[1] 黃霞. Oracle 12c不可見字段的應用[J]. 電腦編程技巧與維護,2005(23):66,76.
[2] 徐鍇. 企業(yè)信用信息基礎數(shù)據(jù)庫和信用網(wǎng)的設計與開發(fā)[D]. 長沙:湖南大學, 2011.
[3] 張國梁.DevExpress圖表控件XtraCharts在監(jiān)控軟件中的應用[J].電腦與電信,2011(6):44-46.
[4] 陳鋒敏.Ajax原理與系統(tǒng)開發(fā)[M].北京:清華大學出版社,2009.
[5] 仰燕蘭,金曉雪,葉樺. ASP.NET AJAX框架研究及其在Web開發(fā)中的應用[J]. 計算機應用與軟件,2011,28(6):196-198.
[6] 雪連,李家. 基于列模板技術(shù)的雙線條甘特圖的應用于實現(xiàn)[J].微型機與應用,2016,35(4):91-94.
The application and implementation of Oracle based on template column technology
Jia Siyang, Li Jia
(School of Urban and Environmental Sciences, Liaoning Normal University, Dalian 116029, China)
Traditional Oracle contacts with users by SQL*PLUS.This method based on cmd needs complicated orders,so it is hard for some rookies.Many users choose PLSQL Developer because which is convenient and brings better interactive experience on communication.This paper is based on general technology of column template in PLSQL Developer,aims at improving users’ communtcation with Oracle, and makes it more intuitively and can be operated easily, so it can offer better service for users.
database; integrated development; column emplate; DevExpress ASPxGridView
TP393.0
A
10.19358/j.issn.1674- 7720.2017.12.023
賈思楊,李家.列模板技術(shù)在Oracle中的應用與實現(xiàn)[J].微型機與應用,2017,36(12):78-79,83.
2016-11-30)
賈思楊(1990-),通信作者,男,碩士研究生,主要研究方向:地理信息系統(tǒng)集成開發(fā)。E-mail:752625537@qq.com。
李家(1957-),男,本科,副教授,主要研究方向:地理信息系統(tǒng)集成開發(fā)。