<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 利用Delphi開發網絡數據庫應用

    時間:2024-06-28 22:27:42 計算機畢業論文 我要投稿
    • 相關推薦

    利用Delphi開發網絡數據庫應用

     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 INTO TEST_User.TRANS_TEST
      VALUES(@inttest,@strtest)
      SELECT @strtest,* FROM TEST_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')代替;存儲過程的第二個參數與其類似。

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

    【利用Delphi開發網絡數據庫應用】相關文章:

    利用PowerBuilder開發WEB應用03-19

    網絡信息資源的開發與利用03-29

    Delphi 5 數據庫應用中ODBC數據源的自動管理03-18

    客戶數據庫的開發與信息資源的利用03-23

    基于Delphi的VCL控件開發與實現論文01-01

    開發基于SQL SERVER 的C/S數據庫應用系統?03-18

    論Delphi開發商品化軟件的優點03-20

    論網絡環境下多媒體課件的開發及應用03-05

    淺談地方文獻的開發和利用03-18

    主站蜘蛛池模板: 成人午夜精品亚洲日韩| 国产精品自在欧美一区| 91精品国产91久久| 欧美精品v欧洲精品| 久久久久国产精品麻豆AR影院| 国产精品国产三级专区第1集| 亚洲精品国产品国语在线| 国产欧美日本亚洲精品一5| 69久久夜色精品国产69| 中文字幕一精品亚洲无线一区 | 久久精品免费一区二区三区| 亚洲精品无码不卡在线播HE | 久久久久久九九99精品| 午夜精品久久久久久| 久久国产精品免费一区| 国产高清一级毛片精品| 热99re久久国超精品首页| 国产福利在线观看精品| 精品成在人线AV无码免费看 | 狠狠精品久久久无码中文字幕| 久久国产乱子精品免费女| 国产成人亚洲精品| 55夜色66夜色国产精品视频| 国产在线精品一区二区中文| 精品综合久久久久久888蜜芽| 亚洲AV乱码久久精品蜜桃| 永久免费精品影视网站| 中文精品久久久久人妻| 亚洲日韩精品射精日| 一色屋精品视频在线观看| 午夜精品久久影院蜜桃| 亚洲一区二区精品视频| 亚欧无码精品无码有性视频| 思思久久99热免费精品6| 亚欧乱色国产精品免费视频 | 国产精品99久久精品爆乳| 国产精品免费看久久久香蕉| 国产精品无码久久综合网| 精品久久久久久久久久中文字幕 | 狠狠色丁香婷婷综合精品视频| 国产精品久久国产精品99盘|