日韩视频专区_久久精品国产成人av_青青免费在线视频_欧美精品一级片_日韩在线观看中文字幕_九九热在线精品

美章網 資料文庫 Delphi開發網絡數據庫應用范文

Delphi開發網絡數據庫應用范文

本站小編為你精心準備了Delphi開發網絡數據庫應用參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

Delphi開發網絡數據庫應用

delphi是具可視化界面的面向對象編程語言,它以其功能強大、簡便易用等諸多特性,深受編程人員的歡迎。Delphi中提供了數據庫引擎BDE(BorlandDatabaseEngine),并內含眾多的數據庫調用構件,為編程人員開發客戶/服務器應用程序提供了方便。通常情況下,利用Delphi開發數據庫應用程序,可以使用Tbr、TDataSource、TDBEdit、TDBNavigator等構件。只要正確設置了構件的某些屬性,再編寫必要的程序代碼對一些特定事件進行處理,就能夠完成對多種數據庫進行的數據處理,例如:記錄的輸入、修改、刪除和查詢等。這樣做雖然只需要編寫極少量的程序代碼就能達到很好的效果,但如果在程序設計過程中,某些數據表的結構發生了改變,則必須修改與此數據表有關的所有構件的屬性,這將使程序員陷入繁瑣的重復勞動中。

為避免上述的麻煩,我們可以在編寫網絡數據庫應用程序時采用結構化查詢語言SQL(StructuredQueryLanguage),這樣不僅可以更方便地與諸如SQLServer、Oracle等各種后臺數據庫進行動態的數據交換,而且可以使程序的修改和移植更加靈活。我們以數據輸入模塊為例,說明開發客戶/服務器應用程序時如何采用SQL語句實現數據處理功能。首先,判斷是否已經有事務處理程序在運行,如果有,將其回卷(rollback);如果沒有,則啟動一個新的事務,為數據的最終處理做準備。其次,是設置SQL語句,并將其寫入TQuery構件中。最后,將事務提交或回卷,至此完成一條記錄的數據輸入。

下面是以頁面中的TEdit類型編輯框內容作為數據源,向數據庫輸入記錄的過程代碼:

procedureDataInsert(constqName:TQuery;

szDBName:string;iNum:Integer;

iMark:arrayofInteger;eName:arrayofTEdit);

var

i:Integer;

szSQL:string;

begin

ifDataModule1.DataBase1.InTransaction=truethen

DataModule1.DataBase1.RollBack;

DataModule1.DataBase1.StartTransaction;

szSQL:=''''INSERTINTO''''+szDBName+''''VALUES(''''

fori:=0toiNum-1do

begin

ifiMark[i]=0then

szSQL:=szSQL+eName[i].Text{非字符方式}

else

szSQL:=szSQL+''''"''''+eName[i].Text+''''"'''';{字符方式}

ifi=iNum-1then

szSQL:=szSQL+'''')''''

else

szSQL:=szSQL+'''','''';

end;

qName.Close;{關閉查詢}

qName.SQL.Clear;{清SQL特性內容}

qName.SQL.ADD(szSQL);{添加SQL內容}

szSQL:=''''SELECT*FROM''''+szDBName;

qName.SQL.ADD(szSQL);

qName.Open;{返回結果集}

mit;

end;

以上過程包含五個參數,實現從頁面中的一系列編輯框中讀取數據,并向指定數據表輸入的功能。其中,參數qName為頁面中所使用的TQuery類構件的名稱;參數szDBName是數據表的名稱;參數eName是TEdit類型的數組,列出了頁面中包含數據的各編輯框名稱;參數iNum是數據表中的字段個數,也即編輯框的個數;參數iMark是一個整數類型的數組,該參數表明相應字段是以何種方式輸入的,如果是字符方式,需要在數據前后兩端加上引號。需要注意的是:在調用本過程之前,應將數據庫連接打開:

DataModule1.DataBase1.Connected:=true;

過程調用完成后,將數據庫連接斷開:

DataModule1.DataBase1.Connected:=false;

另外,開發網絡數據庫應用程序時,還可以使用存儲過程,即:將預先編譯過的SQL語句存儲在服務器上。存儲過程提前運行,且不與程序代碼一同存儲和編譯,因此其對應主程序中的代碼相對簡潔,運行速度也較快。SQL語句的集中存放,使其修改更容易。

要創建向數據表中輸入數據的存儲過程,代碼編寫舉例如下:

CREATEPROCProcTest1

@inttestsmallint

,@strtestchar(4)output

AS

INSERTINTOTEST_User.TRANS_TEST

VALUES(@inttest,@strtest)

SELECT@strtest,*FROMTEST_User.TRANS_TEST

以上代碼向數據表TEST_User.TRANS_TEST添加數據,該數據表包括兩個字段:第一個字段為smallint類型的數據,參數類型定為Input(在存儲過程中可缺省);第二個字段數據為長度為4的字符類型,參數類型為Output。

其模塊程序的編寫與DataInsert過程相似,區別主要在于模塊的中間部分,對應的主要代碼如下:

StoredProc1.Close;

{關閉存儲過程}

StoredProc1.Params[1].ParamType:=ptInput;

{設置存儲過程的參數類型}

StoredProc1.Params[1].AsInteger:=1;

{設置存儲過程中參數的數據}

StoredProc1.Params[2].ParamType:=ptOutput;

StoredProc1.Params[2].AsString:=''''abcd'''';

StoredProc1.Open;{打開存儲過程}

其中,StoredProc1是TStoredProc類型的構件名稱;Params[1]是存儲過程中的第一個參數,對應存儲過程ProcTest1可以用ParamByName(''''@inttest'''')代替;存儲過程的第二個參數與其類似。

實際上,編寫對網絡數據庫進行其他數據處理(如:修改、刪除和查詢等)的模塊,與數據的輸入模塊大體相似,這里就不再贅述了。

主站蜘蛛池模板: 毛片视频网 | 超碰极品| 日本黄色www | 欧美激情综合五月色丁香 | 亚洲视频在线看 | 久久久久久一级片 | 九九在线精品 | 黄色一级片免费 | 69色视频| 巨大黑人极品videos精品 | 亚洲福利天堂 | 婷婷成人综合 | 成人免费视频入口 | 久草在在线 | 男人天堂av在线播放 | 国产精品综合 | 四虎影视免费在线观看 | 中文字幕高清 | 精品一区二区三区国产 | 中文字幕精品一区二区精品 | 午夜毛片在线观看 | 天天躁日日躁aaaaxxxx | 黄色片免费网站 | 粉色午夜视频 | 欧美a在线播放 | 超碰最新网址 | 日韩精品视频在线免费观看 | 欧美一区一区 | 心动小房东动漫1至6集 在线观看免费 | www.天天操| 欧美一级特黄视频 | 亚洲少妇一区二区 | 中文字幕xxxx | 亚洲免费久久 | 午夜第一页 | 免费成人黄色网址 | 国产欧美精品在线观看 | 日本欧美三级 | 午夜视频一区二区 | 日日狠狠久久偷偷四色综合免费 | av国产在线观看 |