六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

使用Delphi開發(fā)網(wǎng)絡數(shù)據(jù)庫應用

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

為避免上述的麻煩,我們可以在編寫網(wǎng)絡數(shù)據(jù)庫應用程序時采用結構化查詢語言 SQL(Structured Query Language),這樣不僅可以更方便地與諸如 SQL Server、Oracle 等各種后臺數(shù)據(jù)庫進行動態(tài)的數(shù)據(jù)交換,而且可以使程序的修改和移植更加靈活。我們以數(shù)據(jù)輸入模塊為例,說明開發(fā)客戶/服務器應用程序時如何采用 SQL 語句實現(xiàn)數(shù)據(jù)處理功能。首先,判斷是否已經(jīng)有事務處理程序在運行,如果有,將其回卷(rollback);如果沒有,則啟動一個新的事務,為數(shù)據(jù)的最終處理做準備。其次,是設置 SQL 語句,并將其寫入 TQuery 構件中。最后,將事務提交或回卷,至此完成一條記錄的數(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; {關閉查詢}
qName.SQL.Clear; {清SQL特性內(nèi)容}
qName.SQL.ADD(szSQL); {添加SQL內(nèi)容}
szSQL := ’SELECT * FROM ’+szDBName;
qName.SQL.ADD(szSQL);
qName.Open; {返回結果集}
DataModule1.DataBase1.Commit;
end;
以上過程包含五個參數(shù),實現(xiàn)從頁面中的一系列編輯框中讀取數(shù)據(jù),并向指定數(shù)據(jù)表輸入的功能。其中,參數(shù) qName 為頁面中所使用的 TQuery 類構件的名稱;參數(shù) szDBName 是數(shù)據(jù)表的名稱;參數(shù)eName 是 TEdit 類型的數(shù)組,列出了頁面中包含數(shù)據(jù)的各編輯框名稱;參數(shù) iNum 是數(shù)據(jù)表中的字段個數(shù),也即編輯框的個數(shù);參數(shù) iMark 是一個整數(shù)類型的數(shù)組,該參數(shù)表明相應字段是以何種方式輸入的,如果是字符方式,需要在數(shù)據(jù)前后兩端加上引號。需要注意的是:在調(diào)用本過程之前,應將數(shù)據(jù)庫連接打開:

DataModule1.DataBase1.Connected := true;

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

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

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ù)表包括兩個字段:第一個字段為 smallint 類型的數(shù)據(jù),參數(shù)類型定為 Input(在存儲過程中可缺省);第二個字段數(shù)據(jù)為長度為4 的字符類型,參數(shù)類型為 Output。

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

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

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


主站蜘蛛池模板: 亚洲免费网站在线观看 | 青青草视频播放 | 五月天伊人 | 午夜影视免费观看 | 日本 韩国 三级 国产 欧美 | 四月婷婷 | 欧美亚洲国产精品 | 在线天堂网 | 中日韩一级片 | 亚洲a图 | 日韩精品亚洲专区在线影视 | 亚洲福利精品一区二区三区 | 人人天天夜夜 | 综合色视频 | 午夜www在线观看完整版视频 | 午夜在线亚洲 | 亚洲欧美不卡 | 亚洲人成网男女大片在线播放 | 亚洲精品91大神在线观看 | 欧美呦呦在线 | 午夜在线观看免费观看大全 | 色黄视频 | 色天使色婷婷在线影院亚洲 | 有码日韩 | 亚洲国产精品线播放 | 四虎a456tncom | 宅男午夜视频在线观看 | 午夜激情视频专区在线观看网站大全 | 青青草国产精品视频 | 四虎在线精品免费高清在线 | 亚洲狼网站狼狼鲁亚洲下载 | 欧美午夜不卡在线观看最新 | 日韩黄在线观看免费视频 | 任我鲁这里有精品视频在线播 | 午夜男人网 | 亚洲国产成人久久精品影视 | 日日淫 | 一级毛片一级毛片一级毛片一级毛片 | 天天躁夜夜 | 午夜黄色毛片 | 午夜视频久久久久一区 |