中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      利用Delphi開發(fā)網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用

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

      利用Delphi開發(fā)網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用

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

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

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

      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)閉查詢}
        qName.SQL.Clear; {清SQL特性內(nèi)容}
        qName.SQL.ADD(szSQL); {添加SQL內(nèi)容}
        szSQL := 'SELECT * FROM '+szDBName;
        qName.SQL.ADD(szSQL);
        qName.Open; {返回結(jié)果集}
        DataModule1.DataBase1.Commit;
      end;

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

      DataModule1.DataBase1.Connected := true;

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

        要?jiǎng)?chuàng)建向數(shù)據(jù)表中輸入數(shù)據(jù)的存儲(chǔ)過程,代碼編寫舉例如下:

      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
        以上代碼向數(shù)據(jù)表 TEST_User.TRANS_TEST 添加數(shù)據(jù),該數(shù)據(jù)表包括兩個(gè)字段:第一個(gè)字段為 smallint 類型的數(shù)據(jù),參數(shù)類型定為 Input(在存儲(chǔ)過程中可缺省);第二個(gè)字段數(shù)據(jù)為長度為4 的字符類型,參數(shù)類型為 Output。

        其模塊程序的編寫與 DataInsert 過程相似,區(qū)別主要在于模塊的中間部分,對(duì)應(yīng)的主要代碼如下:

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

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

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

      利用PowerBuilder開發(fā)WEB應(yīng)用03-19

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

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

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

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

      開發(fā)基于SQL SERVER 的C/S數(shù)據(jù)庫應(yīng)用系統(tǒng)?03-18

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

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

      淺談地方文獻(xiàn)的開發(fā)和利用03-18

      主站蜘蛛池模板: 辽阳县| 精品国产高清一区二区广区| 中国免费av网| 成年人免费黄色h网| 国产综合精品久久久久成人| 达拉特旗| 漳州市| 旺苍县| 长寿区| 灵川县| 六枝特区| 精品在线观看视频二区| 毛片一级精油按摩无码| 青春草在线观看播放网站 | 康保县| 威海市| 隆回县| 利川市| 余江县| 农村国产毛片一区二区三区女| 旌德县| 中文字幕少妇人妻视频| 午夜爽毛片| 99久久综合国产精品免费| 国产午夜精品视频在线播放| 保定市| 亚洲精彩视频一区二区| 中国少妇久久一区二区| 国产精品国产三级国产AvkTV| 亚洲AV无码一区二区一二区教师 | 欧洲国产精品无码专区影院| 岛国熟女一区二区三区| 日韩av二区三区一区| 女人的天堂av免费看| 久久99精品这里精品动漫6| 国产香蕉一区二区三区| 男人的av天堂狠狠操| 精品四十色区在线视频| 久久久久久国产福利网站| 大伊香蕉精品视频一区| 日韩人妻少妇中文字幕av|