鐘明
摘要:該文列出了Delphi7.0在SQL2000數(shù)據(jù)庫(kù)開(kāi)發(fā)中4項(xiàng)實(shí)用技巧,使數(shù)據(jù)初始開(kāi)發(fā)編程工作變得輕松方便,給學(xué)習(xí)Delphi數(shù)據(jù)庫(kù)開(kāi)發(fā)程序員以一定的幫助。
關(guān)鍵詞:計(jì)算機(jī);編程;Delphi;數(shù)據(jù)庫(kù);技巧
中圖分類號(hào):TP271文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)15-3481-03
Delphi是一種具有強(qiáng)大功能的開(kāi)發(fā)工具,特別是具有強(qiáng)大的數(shù)據(jù)庫(kù)開(kāi)發(fā)功能,ADO訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)在Delphi7.0里可以高效的使用,使其網(wǎng)絡(luò)數(shù)據(jù)在查詢統(tǒng)計(jì)中非常方便。下面列出了四項(xiàng)在SQL2000數(shù)據(jù)庫(kù)開(kāi)發(fā)編程中的實(shí)用方法,會(huì)給編程工作帶來(lái)捷徑。
1與Sql2000數(shù)據(jù)服務(wù)器的連接
用Delphi7.0開(kāi)發(fā)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)程序時(shí),首先要解決的是與服務(wù)器的SQL2000數(shù)據(jù)管理系統(tǒng)進(jìn)行連接,然后才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,下面是具體的連接方法:
在窗體中添加ADOConnection組件,屬性設(shè)置如下:
ADOConnection1-loginprompt-false
下面以sa為登錄名進(jìn)行連接master數(shù)據(jù)庫(kù)為例,代碼如下:
connstr:=Provider=SQLOLEDB.1;Persist Security Info=False;;
connstr:=connstr+User ID=+edit2.text+;Initial Catalog=master;Data Source=+edit1.text+;;
connstr:=connstr+Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;;
connstr:=connstr+Workstation ID=;Use Encryption for Data=False;;
connstr:=connstr+Password=+edit3.Text+;Tag with column collation when possible=False;;
ADOConnection1.ConnectionString:=connstr;
運(yùn)行結(jié)果如圖1:
圖1如何連接數(shù)據(jù)表
當(dāng)完成與數(shù)據(jù)服務(wù)連接后,就要進(jìn)入數(shù)據(jù)操作主窗口,對(duì)數(shù)據(jù)庫(kù)中有關(guān)數(shù)據(jù)表進(jìn)行操作。下面對(duì)數(shù)據(jù)庫(kù)master中的數(shù)據(jù)表ta ble1為例進(jìn)行說(shuō)明:(在第一項(xiàng)基礎(chǔ)上進(jìn)行)
1.1在master數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表table1,表的結(jié)構(gòu)為
序號(hào)(int,Null)姓名(varchar(10),Null)職務(wù)(varchar(20),Null)
1.2在數(shù)據(jù)窗體中加入如下組件
3個(gè)dbedit和DBNavigator、ADOTable、DataSource各1個(gè),組件的屬性按下列順序依次設(shè)置:
ADOTable1-connection-Form1.ADOConnection1
DataSource1-dataset- ADOTable1
dbedit1、dbedit2、dbedit3-datasource-DataSource1
DBNavigator-datasource-DataSource1
dbedit1、dbedit2、dbedit3-datafield-序號(hào)、姓名、職務(wù)然后在form2的onshow事件中寫入如下代碼:
adotable1.TableName:=table1;
adotable1.Active:=false;
adotable1.Active:=true;
運(yùn)行結(jié)果如圖2:
圖2
進(jìn)入數(shù)據(jù)維護(hù)界面后,即可以對(duì)數(shù)據(jù)表table1進(jìn)行修改、增加、刪除、瀏覽等操作。
2通過(guò)查找關(guān)鍵字定位數(shù)據(jù)表中某個(gè)記錄
在瀏覽數(shù)據(jù)表時(shí),有時(shí)需要數(shù)據(jù)維護(hù)人員迅速將數(shù)據(jù)以某個(gè)關(guān)鍵字定位在某個(gè)記錄處,方便地進(jìn)行數(shù)據(jù)的有關(guān)維護(hù),會(huì)給數(shù)據(jù)操作員帶來(lái)極大便利。下面以數(shù)據(jù)表table1的職務(wù)內(nèi)容為關(guān)鍵字進(jìn)行查找,實(shí)現(xiàn)的方法如下:
在窗體中添加edit、adoquery組件。
設(shè)置adoquery屬性:adoquery1-connection-Form1.ADOConnection1
在button的onclick事件中添加如下代碼:
if trim(edit1.text)<> then
begin
if zmii=1 then begin
try
with adoquery1 do
begin
sql.Clear;
SQL.Add(SELECT * INTO cz FROM table1 where職務(wù)like ++%+Trim(edit1.Text)+%+);
open;
end;
except
end;
zmii:=0;
end;
with adoquery1 do
begin
sql.Clear;
sql.Add(SELECT * FROM cz);
open;
i:=RecordCount;
if i=0 then
begin
showmessage(沒(méi)找到!);
edit1.Text:=;
button1.Caption:=查找;
end
else
begin
bl:=trim(fieldbyname(序號(hào)).AsString);
adotable1.Locate(序號(hào),bl,[]);
button1.Caption:=下一個(gè);
end
end;
try
with adoquery1 do
begin
sql.Clear;
sql.Add(delete from cz where序號(hào)=+bl); open;
end;
except
end;
運(yùn)行結(jié)果如圖3:
3實(shí)現(xiàn)鼠標(biāo)中間鍵對(duì)數(shù)據(jù)表格的正常滾動(dòng)
我們?cè)跒g覽數(shù)據(jù)時(shí)有時(shí)需要以表格的形式來(lái)進(jìn)行方便的查看,但我們用delphi創(chuàng)建數(shù)據(jù)表格后發(fā)現(xiàn),在表格使用中間鍵翻閱數(shù)據(jù)時(shí)并不象我們想像的那樣能正常滾動(dòng)到下一頁(yè)面。下面的方法可以實(shí)現(xiàn)正常的中間鍵功能:
分別將dbgrid組件和additional中的組件ApplicationEvents添加到窗體上,設(shè)置組件dbgrid1的屬性:dbgrid1-datasource-Data Source1,然后在組件ApplicationEvents1的OnMessage事件中寫入如下代碼:
var
i: SmallInt;
begin
if Msg.message = WM_MOUSEWHEEL then
begin
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
i := HiWord(Msg.wParam) ;
if i > 0 then
Msg.wParam := VK_UP
else
Msg.wParam := VK_DOWN;
Handled := False;
end;
試一試中間鍵是不是一切正常了?運(yùn)行結(jié)果如圖4:
圖4
以上有關(guān)代碼在Delphi7.0和SQL2000下測(cè)試通過(guò)。