在线观看国产区-在线观看国产欧美-在线观看国产免费高清不卡-在线观看国产久青草-久久国产精品久久久久久-久久国产精品久久久

美章網(wǎng) 資料文庫(kù) Delphi開發(fā)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用范文

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

本站小編為你精心準(zhǔn)備了Delphi開發(fā)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。

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

delphi是具可視化界面的面向?qū)ο缶幊陶Z言,它以其功能強(qiáng)大、簡(jiǎn)便易用等諸多特性,深受編程人員的歡迎。Delphi中提供了數(shù)據(jù)庫(kù)引擎BDE(BorlandDatabaseEngine),并內(nèi)含眾多的數(shù)據(jù)庫(kù)調(diào)用構(gòu)件,為編程人員開發(fā)客戶/服務(wù)器應(yīng)用程序提供了方便。通常情況下,利用Delphi開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序,可以使用Tbr、TDataSource、TDBEdit、TDBNavigator等構(gòu)件。只要正確設(shè)置了構(gòu)件的某些屬性,再編寫必要的程序代碼對(duì)一些特定事件進(jìn)行處理,就能夠完成對(duì)多種數(shù)據(jù)庫(kù)進(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ù)庫(kù)應(yīng)用程序時(shí)采用結(jié)構(gòu)化查詢語言SQL(StructuredQueryLanguage),這樣不僅可以更方便地與諸如SQLServer、Oracle等各種后臺(tái)數(shù)據(jù)庫(kù)進(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ù)輸入。

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

procedureDataInsert(constqName:TQuery;

szDBName:string;iNum:Integer;

iMark:arrayofInteger;eName:arrayofTEdit);

var

i:Integer;

szSQL:string;

begin

ifDataModule1.DataBase1.InTransaction=truethen

DataModule1.DataBase1.RollBack;

DataModule1.DataBase1.StartTransaction;

szSQL:=''''INSERTINTO''''+szDBName+''''VALUES(''''

fori:=0toiNum-1do

begin

ifiMark[i]=0then

szSQL:=szSQL+eName[i].Text{非字符方式}

else

szSQL:=szSQL+''''"''''+eName[i].Text+''''"'''';{字符方式}

ifi=iNum-1then

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é)果集}

mit;

end;

以上過程包含五個(gè)參數(shù),實(shí)現(xiàn)從頁(yè)面中的一系列編輯框中讀取數(shù)據(jù),并向指定數(shù)據(jù)表輸入的功能。其中,參數(shù)qName為頁(yè)面中所使用的TQuery類構(gòu)件的名稱;參數(shù)szDBName是數(shù)據(jù)表的名稱;參數(shù)eName是TEdit類型的數(shù)組,列出了頁(yè)面中包含數(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ù)庫(kù)連接打開:

DataModule1.DataBase1.Connected:=true;

過程調(diào)用完成后,將數(shù)據(jù)庫(kù)連接斷開:

DataModule1.DataBase1.Connected:=false;

另外,開發(fā)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(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ǔ)過程,代碼編寫舉例如下:

CREATEPROCProcTest1

@inttestsmallint

,@strtestchar(4)output

AS

INSERTINTOTEST_User.TRANS_TEST

VALUES(@inttest,@strtest)

SELECT@strtest,*FROMTEST_User.TRANS_TEST

以上代碼向數(shù)據(jù)表TEST_User.TRANS_TEST添加數(shù)據(jù),該數(shù)據(jù)表包括兩個(gè)字段:第一個(gè)字段為smallint類型的數(shù)據(jù),參數(shù)類型定為Input(在存儲(chǔ)過程中可缺省);第二個(gè)字段數(shù)據(jù)為長(zhǎng)度為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ù)庫(kù)進(jìn)行其他數(shù)據(jù)處理(如:修改、刪除和查詢等)的模塊,與數(shù)據(jù)的輸入模塊大體相似,這里就不再贅述了。

主站蜘蛛池模板: 亚洲精品综合网 | 国产福利精品视频 | 国内精品久久久久久99蜜桃 | 在你心之所向的地方 | 中国国产成人精品久久 | 波多野结衣50连精喷在线 | 亚洲人人精品 | 热久在线| 中文字幕精品视频 | 四虎网站网址 | 蜜桃视频一区 | 午夜视频免费国产在线 | 最近更新在线观看视频3 | 亚洲国产日韩综合久久精品 | 日本在线视频免费看 | 一区二区精品在线观看 | 四虎4hu永久免费视频大全 | 欧美资源站 | 能看毛片的网站 | 国产一级高清免费观看 | 久久综合一区二区三区 | 久久综合丁香 | 精品久久久久久久久免费影院 | 欧美日韩在线影院 | 亚洲国产人成中文幕一级二级 | 中文字幕电影资源网站大全 | 精品免费久久 | 一级欧美日韩 | 亚洲精品自拍区在线观看 | 一区二区三区久久精品 | 丁香五六月婷婷 | 开心午夜婷婷色婷在线 | 亚洲一卡二卡在线 | 在线看你懂| 日本不卡不码高清免费观看 | 波多野结衣在线中文 | 国产精品电影网 | 麻豆精品久久精品色综合 | 九九99香蕉在线视频网站 | 男女国产| 最近的中文字幕免费完整 |