激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

利用Delphi開(kāi)發(fā)網(wǎng)絡(luò )數據庫應用

時(shí)間:2024-06-28 22:27:42 計算機畢業(yè)論文 我要投稿
  • 相關(guān)推薦

利用Delphi開(kāi)發(fā)網(wǎng)絡(luò )數據庫應用

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

  為避免上述的麻煩,我們可以在編寫(xiě)網(wǎng)絡(luò )數據庫應用程序時(shí)采用結構化查詢(xún)語(yǔ)言 SQL(Structured Query Language),這樣不僅可以更方便地與諸如 SQL Server、Oracle 等各種后臺數據庫進(jìn)行動(dòng)態(tài)的數據交換,而且可以使程序的修改和移植更加靈活。我們以數據輸入模塊為例,說(shuō)明開(kāi)發(fā)客戶(hù)/服務(wù)器應用程序時(shí)如何采用 SQL 語(yǔ)句實(shí)現數據處理功能。首先,判斷是否已經(jīng)有事務(wù)處理程序在運行,如果有,將其回卷(rollback);如果沒(méi)有,則啟動(dòng)一個(gè)新的事務(wù),為數據的最終處理做準備。其次,是設置 SQL 語(yǔ)句,并將其寫(xiě)入 TQuery 構件中。最后,將事務(wù)提交或回卷,至此完成一條記錄的數據輸入。

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

procedure DataInsert(const qName:TQuery;
szDBName:string;iNum:Integer;
      iMark:array of Integer;eName:array of TEdit);
var
  i : Integer;
  szSQL : string;
begin
  if DataModule1.DataBase1.InTransaction=true then
 DataModule1.DataBase1.RollBack;
  DataModule1.DataBase1.StartTransaction;
  szSQL := 'INSERT INTO '+szDBName+' VALUES('
  for i:=0 to iNum-1 do
  begin
    if iMark[i]=0 then
 szSQL := szSQL+eName[i].Text {非字符方式}
    else
 szSQL := szSQL+'"'+eName[i].Text+'"'; {字符方式}
    if i=iNum-1  then
        szSQL := szSQL+')'
    else
 szSQL := szSQL+',';
  end;
  qName.Close; {關(guān)閉查詢(xún)}
  qName.SQL.Clear; {清SQL特性?xún)热輢
  qName.SQL.ADD(szSQL); {添加SQL內容}
  szSQL := 'SELECT * FROM '+szDBName;
  qName.SQL.ADD(szSQL);
  qName.Open; {返回結果集}
  DataModule1.DataBase1.Commit;
end;

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

DataModule1.DataBase1.Connected := true;

過(guò)程調用完成后,將數據庫連接斷開(kāi):
DataModule1.DataBase1.Connected := false;
  另外,開(kāi)發(fā)網(wǎng)絡(luò )數據庫應用程序時(shí),還可以使用存儲過(guò)程,即:將預先編譯過(guò)的 SQL 語(yǔ)句存儲在服務(wù)器上。存儲過(guò)程提前運行,且不與程序代碼一同存儲和編譯,因此其對應主程序中的代碼相對簡(jiǎn)潔,運行速度也較快。SQL 語(yǔ)句的集中存放,使其修改更容易。

  要創(chuàng )建向數據表中輸入數據的存儲過(guò)程,代碼編寫(xiě)舉例如下:

CREATE PROC ProcTest1
  @inttest smallint
  ,@strtest char(4) output
AS
  INSERT INTO TEST_User.TRANS_TEST
  VALUES(@inttest,@strtest)
  SELECT @strtest,* FROM TEST_User.TRANS_TEST
  以上代碼向數據表 TEST_User.TRANS_TEST 添加數據,該數據表包括兩個(gè)字段:第一個(gè)字段為 smallint 類(lèi)型的數據,參數類(lèi)型定為 Input(在存儲過(guò)程中可缺省);第二個(gè)字段數據為長(cháng)度為4 的字符類(lèi)型,參數類(lèi)型為 Output。

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

StoredProc1.Close; 
{關(guān)閉存儲過(guò)程}
StoredProc1.Params[1].ParamType := ptInput; 
{設置存儲過(guò)程的參數類(lèi)型}
StoredProc1.Params[1].AsInteger := 1;
 {設置存儲過(guò)程中參數的數據}
StoredProc1.Params[2].ParamType := ptOutput;
StoredProc1.Params[2].AsString := 'abcd';
StoredProc1.Open; {打開(kāi)存儲過(guò)程}
  其中,StoredProc1 是 TStoredProc 類(lèi)型的構件名稱(chēng);Params[1] 是存儲過(guò)程中的第一個(gè)參數,對應存儲過(guò)程 ProcTest1 可以用ParamByName('@inttest')代替;存儲過(guò)程的第二個(gè)參數與其類(lèi)似。

  實(shí)際上,編寫(xiě)對網(wǎng)絡(luò )數據庫進(jìn)行其他數據處理(如:修改、刪除和查詢(xún)等)的模塊,與數據的輸入模塊大體相似,這里就不再贅述了。

【利用Delphi開(kāi)發(fā)網(wǎng)絡(luò )數據庫應用】相關(guān)文章:

利用PowerBuilder開(kāi)發(fā)WEB應用03-19

網(wǎng)絡(luò )信息資源的開(kāi)發(fā)與利用03-29

Delphi 5 數據庫應用中ODBC數據源的自動(dòng)管理03-18

客戶(hù)數據庫的開(kāi)發(fā)與信息資源的利用03-23

基于Delphi的VCL控件開(kāi)發(fā)與實(shí)現論文01-01

開(kāi)發(fā)基于SQL SERVER 的C/S數據庫應用系統?03-18

論Delphi開(kāi)發(fā)商品化軟件的優(yōu)點(diǎn)03-20

論網(wǎng)絡(luò )環(huán)境下多媒體課件的開(kāi)發(fā)及應用03-05

淺談地方文獻的開(kāi)發(fā)和利用03-18

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频