程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi在網絡數據庫中的應用

Delphi在網絡數據庫中的應用

編輯:Delphi
 隨著Internet的普及和發展,Web成了新的商家必爭之地,各家廠商都希望通過Internet技術與最終用戶建立直接的聯系,比如在Web上向用戶推銷產品、方便用戶在網上查詢自己喜歡的商品並提供網上訂購服務等,於是產生了CGI(公用網關接口)、ASP等一系列生成動態網頁的方法。CGI是最早生成動態網頁的方法,幾乎所有的WEB服務器都支持它,由於CGI程序是作為獨立的外部應用程序來執行的,它要與服務器上的其他程序競爭系統資源,從而降低了服務器運行的效率。另外,使用CGI開發WEB應用時要求程序員不僅要掌握HTML語言,而且還要精通具體的某個編程語言。Delphi是針對CGI效率低的缺點提出來的,它通常以動態鏈接庫的形式出現,是駐留在WEB服務器上的程序,Delphi技術執行程序的效率要大大優於CGI技術,而且開發起來也要相對簡單一點。
  Delphi 是具可視化界面的面向對象編程語言,它以其功能強大、簡便易用等諸多特性,深受編程人員的歡迎。Delphi 中提供了數據庫引擎 BDE(Borland Database Engine),並內含眾多的數據庫調用構件,為編程人員開發客戶/服務器應用程序提供了方便。通常情況下,利用 Delphi 開發數據庫應用程序,可以使用TTable、TDataSource、TDBEdit、TDBNavigator等構件。只要正確設置了構件的某些屬性,再編寫必要的程序代碼對一些特定事件進行處理,就能夠完成對多種數據庫進行的數據處理,例如:記錄的輸入、修改、刪除和查詢等。這樣做雖然只需要編寫極少量的程序代碼就能達到很好的效果,但如果在程序設計過程中,某些數據表的結構發生了改變,則必須修改與此數據表有關的所有構件的屬性,這將使程序員陷入繁瑣的重復勞動中。
  為避免上述的麻煩,我們可以在編寫網絡數據庫應用程序時采用結構化查詢語言 SQL(Structured Query Language),這樣不僅可以更方便地與諸如 SQL Server、Oracle 等各種後台數據庫進行動態的數據交換,而且可以使程序的修改和移植更加靈活。我們以數據輸入模塊為例,說明開發客戶/服務器應用程序時如何采用 SQL 語句實現數據處理功能。首先,判斷是否已經有事務處理程序在運行,如果有,將其回卷(rollback);如果沒有,則啟動一個新的事務,為數據的最終處理做准備。其次,是設置 SQL 語句,並將其寫入 TQuery 構件中。最後,將事務提交或回卷,至此完成一條記錄的數據輸入。
  下面是以頁面中的 TEdit 類型編輯框內容作為數據源,向數據庫輸入記錄的過程代碼:
  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; {關閉查詢}
  qName.SQL.Clear; {清SQL特性內容}
  qName.SQL.ADD(szSQL); {添加SQL內容}
  szSQL := ‘SELECT * FROM ‘+szDBName;
  qName.SQL.ADD(szSQL);
  qName.Open; {返回結果集}
  DataModule1.DataBase1.Commit;
  end;

  以上過程包含五個參數,實現從頁面中的一系列編輯框中讀取數據,並向指定數據表輸入的功能。其中,參數 qName 為頁面中所使用的 TQuery 類構件的名稱;參數 szDBName 是數據表的名稱;參數eName 是 TEdit 類型的數組,列出了頁面中包含數據的各編輯框名稱;參數 iNum 是數據表中的字段個數,也即編輯框的個數;參數 iMark 是一個整數類型的數組,該參數表明相應字段是以何種方式輸入的,如果是字符方式,需要在數據前後兩端加上引號。需要注意的是:在調用本過程之前,應將數據庫連接打開:
  DataModule1.DataBase1.Connected := true;
  過程調用完成後,將數據庫連接斷開:
  DataModule1.DataBase1.Connected := false;
  另外,開發網絡數據庫應用程序時,還可以使用存儲過程,即:將預先編譯過的 SQL 語句存儲在服務器上。存儲過程提前運行,且不與程序代碼一同存儲和編譯,因此其對應主程序中的代碼相對簡潔,運行速度也較快。SQL 語句的集中存放,使其修改更容易。
  要創建向數據表中輸入數據的存儲過程,代碼編寫舉例如下:
  CREATE PROC ProcTest1
  @inttest smallint
  ,@strtest char(4) output
  AS
  INSERT I
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved