新聞中心
作為一款優(yōu)秀的編程語(yǔ)言,Delphi不僅僅在桌面應(yīng)用程序的開(kāi)發(fā)領(lǐng)域有著卓越表現(xiàn),對(duì)于數(shù)據(jù)庫(kù)的操作也有很高的支持。Delphi的數(shù)據(jù)庫(kù)操作不僅僅可以輕松地讀取和修改數(shù)據(jù),而且還可以在應(yīng)用程序內(nèi)部輕松地創(chuàng)建、打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接。本文將詳細(xì)介紹使用Delphi進(jìn)行數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)方法,并提供實(shí)際示例,幫助讀者深入了解Delphi數(shù)據(jù)庫(kù)操作的細(xì)節(jié)。

創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、廣平網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為廣平等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
一、創(chuàng)建數(shù)據(jù)庫(kù)連接
實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作的之一步是建立一個(gè)數(shù)據(jù)庫(kù)連接。在Delphi中使用DBExpress來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接,它是一組可視化組件,用于在Delphi應(yīng)用程序中連接和控制數(shù)據(jù)庫(kù)。下面我們來(lái)演示一下如何使用DBExpress建立一個(gè)數(shù)據(jù)庫(kù)連接。以MySQL數(shù)據(jù)庫(kù)為例:
1. 添加DBExpress組件庫(kù)
通過(guò) “組件”-> “組件” 菜單,彈出組件窗口;
選擇按字母排序的“DBExpress”組件庫(kù),勾選 DBXMySQL 和 DBXCommon 組件,然后點(diǎn)擊確認(rèn)。
2. 配置連接
通過(guò) “文件” -> “新建” -> “其他” -> “Data Explorer” 打開(kāi)數(shù)據(jù)資源窗口,右鍵點(diǎn)擊 “connections” 組中的 “New Connection…”,彈出以下連接設(shè)置對(duì)話框:
填寫以下信息:
連接名稱:mysql連接
數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序:MySQL (DBXMySQL)
主機(jī)名稱或IP地址:127.0.0.1
端口號(hào):3306
用戶名:root
密碼:root
database:test(你需要先手動(dòng)在 MySQL中新建一個(gè)test數(shù)據(jù)庫(kù))
點(diǎn)擊Test連接按鈕,如果連接成功,則會(huì)彈出測(cè)試連接成功。
3. 使用連接
打開(kāi)要使用連接的數(shù)據(jù)模塊,通過(guò) “組件” -> “dbExpressSQLConnection1” (1),彈出以下SQL連接屬性窗口,點(diǎn)擊右側(cè)的“…”按鈕,在彈出的窗口中選擇剛才創(chuàng)建的mysql連接,點(diǎn)擊確認(rèn)保存。這時(shí),就可以在代碼中使用 TSQLConnection 控件了。
var
conn: TSQLConnection;
conn := TSQLConnection.Create(nil);
try
conn.ConnectionName := ‘dbExpressConnection1’;
conn.DriverName := ‘MySQL’;
conn.GetDriverFunc := ‘getSQLDriverMYSQL’;
conn.LibraryName := ‘dbxmys.dll’;
conn.Params.Add(‘User_name=root’);
conn.Params.Add(‘Password=root’);
conn.Params.Add(‘HostName=127.0.0.1’);
conn.Params.Add(‘Database=test’);
conn.Open;
finally
conn.Free;
end;
二、基本的數(shù)據(jù)庫(kù)操作
接下來(lái),我們看一下Delphi中常用的數(shù)據(jù)庫(kù)操作方法。下面,使用Firebird數(shù)據(jù)庫(kù)來(lái)演示以下基本數(shù)據(jù)操作方法。
1. 創(chuàng)建表格
在現(xiàn)有的數(shù)據(jù)庫(kù)連接下,我們要?jiǎng)?chuàng)建新的表格來(lái)存儲(chǔ)數(shù)據(jù)。我們要在數(shù)據(jù)模塊中放置 TSQLQuery 控件,點(diǎn)擊其屬性編輯器,設(shè)置 Connection 屬性為剛剛創(chuàng)建的mysql連接,并指定SQL語(yǔ)句:
CREATE TABLE person (
id INTEGER PRIMARY KEY,
name VARCHAR(50),
age INTEGER,
born DATE
)
接下來(lái),我們實(shí)例化一個(gè) TSQLQuery 對(duì)象并用它來(lái)執(zhí)行這個(gè)SQL語(yǔ)句:
procedure TForm1.SQLCreateTableButtonClick(Sender: TObject);
var
SQLQuery: TSQLQuery;
begin
SQLQuery := TSQLQuery.Create(nil);
try
SQLQuery.SQLConnection := SQLConnection1;
SQLQuery.SQL.Text := ‘CREATE TABLE person (‘ +
‘id INTEGER PRIMARY KEY, name VARCHAR(50),’ +
‘a(chǎn)ge INTEGER, born DATE)’;
SQLQuery.ExecSQL;
finally
SQLQuery.Free;
end;
end;
2. 插入數(shù)據(jù)
現(xiàn)在,我們已經(jīng)創(chuàng)建了一個(gè)新的表格,我們來(lái)插入幾條記錄。我們要在數(shù)據(jù)模塊中放置 TSQLQuery 控件,設(shè)置 Connection 屬性為剛剛創(chuàng)建的mysql連接,并指定SQL語(yǔ)句:
INSERT INTO person (id, name, age, born)
VALUES (1, ‘張三’, 20, ‘2023/10/1’),
(2, ‘李四’, 23, ‘1998/9/3’),
(3, ‘王五’, 18, ‘2023/5/7’);
接下來(lái),我們利用這個(gè) TSQLQuery 控件來(lái)執(zhí)行這個(gè)SQL語(yǔ)句:
procedure TForm1.SQLInsertButtonClick(Sender: TObject);
var
SQLQuery: TSQLQuery;
begin
SQLQuery := TSQLQuery.Create(nil);
try
SQLQuery.SQLConnection := SQLConnection1;
SQLQuery.SQL.Text := ‘INSERT INTO person (id, name, age, born) ‘ +
‘VALUES (1, ‘ +
QuotedStr(‘張三’) + ‘, ‘ +
’20, ‘ +
QuotedStr(‘2023/10/1’) + ‘), (2, ‘ +
QuotedStr(‘李四’) + ‘, ‘ +
’23, ‘ +
QuotedStr(‘1998/9/3’) + ‘), (3, ‘ +
QuotedStr(‘王五’) + ‘, ‘ +
’18, ‘ +
QuotedStr(‘2023/5/7’) + ‘)’;
SQLQuery.ExecSQL;
finally
SQLQuery.Free;
end;
end;
3. 查詢數(shù)據(jù)
我們已經(jīng)成功地插入了一些數(shù)據(jù),現(xiàn)在我們準(zhǔn)備查詢它們。我們可以使用 TSQLDataSet 控件來(lái)查詢數(shù)據(jù),與其他數(shù)據(jù)集一樣,它可以顯示查詢結(jié)果集和允許用戶進(jìn)行瀏覽、編輯、刪除等。
在數(shù)據(jù)模塊中,設(shè)置 TSQLDataSet 控件的 Connection 屬性為剛剛創(chuàng)建的mysql連接,并設(shè)置它的 CommandText 屬性來(lái)指定查詢語(yǔ)句:
SELECT * FROM person ORDER BY id
下面,我們使用這個(gè) TSQLDataSet 控件來(lái)執(zhí)行這個(gè)查詢語(yǔ)句:
procedure TForm1.SQLQueryButtonClick(Sender: TObject);
begin
SQLDataSet1.CommandText := ‘SELECT * FROM person ORDER BY id’;
SQLDataSet1.Open;
end;
執(zhí)行這個(gè)操作后,我們可以看到如下的結(jié)果:
id name age born
— —- — —-
1 張三 20 2023/10/1
2 李四 23 1998/9/3
3 王五 18 2023/5/7
4. 更新數(shù)據(jù)
假設(shè)我們現(xiàn)在需要更新張三的年齡,我們可以利用 TSQLQuery 控件來(lái)更新數(shù)據(jù)。在數(shù)據(jù)模塊中,設(shè)置 TSQLQuery 控件的 Connection 屬性為剛剛創(chuàng)建的mysql連接,并指定SQL語(yǔ)句:
UPDATE person SET age = 21 WHERE name = ‘張三’;
然后我們就可以利用這個(gè) TSQLQuery 控件來(lái)執(zhí)行這個(gè)SQL語(yǔ)句:
procedure TForm1.SQLUpdateButtonClick(Sender: TObject);
var
SQLQuery: TSQLQuery;
begin
SQLQuery := TSQLQuery.Create(nil);
try
SQLQuery.SQLConnection := SQLConnection1;
SQLQuery.SQL.Text := ‘UPDATE person SET age = 21 WHERE name = ‘ +
QuotedStr(‘張三’);
SQLQuery.ExecSQL;
finally
SQLQuery.Free;
end;
end;
如果我們?cè)俅芜\(yùn)行查詢操作,就可以看到數(shù)據(jù)被正確地更新了:
id name age born
— —- — —-
1 張三 21 2023/10/1
2 李四 23 1998/9/3
3 王五 18 2023/5/7
5. 刪除數(shù)據(jù)
現(xiàn)在,我們已經(jīng)成功地更新了一條記錄,接下來(lái),我們來(lái)看如何刪除一條記錄。在數(shù)據(jù)模塊中,設(shè)置 TSQLQuery 控件的 Connection 屬性為剛剛創(chuàng)建的mysql連接,并指定SQL語(yǔ)句:
DELETE FROM person WHERE name = ‘李四’;
然后我們利用這個(gè) TSQLQuery 控件來(lái)執(zhí)行這個(gè)SQL語(yǔ)句:
procedure TForm1.SQLDeleteButtonClick(Sender: TObject);
var
SQLQuery: TSQLQuery;
begin
SQLQuery := TSQLQuery.Create(nil);
try
SQLQuery.SQLConnection := SQLConnection1;
SQLQuery.SQL.Text := ‘DELETE FROM person WHERE name = ‘ +
QuotedStr(‘李四’);
SQLQuery.ExecSQL;
finally
SQLQuery.Free;
end;
end;
6. 關(guān)閉數(shù)據(jù)庫(kù)連接
在所有數(shù)據(jù)庫(kù)操作完成后,我們需要手動(dòng)關(guān)閉數(shù)據(jù)庫(kù)連接。在數(shù)據(jù)模塊中,添加一個(gè) TSQLConnection 控件并將Connection屬性設(shè)置為剛剛創(chuàng)建的mysql連接。然后,點(diǎn)擊這個(gè) TSQLConnection 控件的 Disconnect() 方法來(lái)關(guān)閉連接。
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SQLConnection1.Disconnect;
end;
三、
本文從Delphi數(shù)據(jù)庫(kù)的連接入手,分別介紹了建立連接、創(chuàng)建表格、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)這些基本的數(shù)據(jù)庫(kù)操作方法。同時(shí),我們也給出了一些實(shí)際的例子來(lái)演示具體的實(shí)現(xiàn)方法。希望能對(duì)讀者理解和掌握Delphi數(shù)據(jù)庫(kù)開(kāi)發(fā)有所幫助。
相關(guān)問(wèn)題拓展閱讀:
- DELPHI基礎(chǔ)教程:Delphi客戶服務(wù)器應(yīng)用開(kāi)發(fā)(四)[1]
- Delphi 開(kāi)發(fā)數(shù)據(jù)庫(kù)控件的方法[1]
- Delphi 數(shù)據(jù)庫(kù)編程
DELPHI基礎(chǔ)教程:Delphi客戶服務(wù)器應(yīng)用開(kāi)發(fā)(四)[1]
從開(kāi)發(fā)平臺(tái)到服務(wù)器的向上適化
適化概述
所謂適化就是將桌面應(yīng)用轉(zhuǎn)化為Client/Server應(yīng)用
適化是一個(gè)很復(fù)雜的主題 這里不詳細(xì)講述 本節(jié)將介紹適化Delphi 應(yīng)用程序中最重要的方面
適化的主要方面有
● 將數(shù)據(jù)庫(kù)從桌面平臺(tái)到服務(wù)器的適化
● 將應(yīng)用程序轉(zhuǎn)化為Client/Server的適化
適化還需要實(shí)現(xiàn)從桌面環(huán)境到Client/Server環(huán)境的轉(zhuǎn)化
桌面數(shù)據(jù)庫(kù)和SQL服務(wù)器數(shù)據(jù)庫(kù)在許多方面有不同之處 例如
● 桌面數(shù)據(jù)庫(kù)用于同一時(shí)刻單用戶的訪問(wèn) 而服務(wù)器用于多用戶訪問(wèn)
● 桌面數(shù)據(jù)庫(kù)是面向記錄的 而服務(wù)器是面向的
● 桌面數(shù)據(jù)庫(kù)將每個(gè)表存儲(chǔ)在獨(dú)立的文件中 而服務(wù)器將所有的表存儲(chǔ)在數(shù)據(jù)庫(kù)中Client/Server應(yīng)用必須解決更新的問(wèn)題 最復(fù)雜的是聯(lián)接 網(wǎng)絡(luò)和事務(wù)控制
適化數(shù)據(jù)庫(kù)
適化數(shù)據(jù)庫(kù)包含下列步驟
● 在桌面數(shù)據(jù)庫(kù)結(jié)構(gòu)的基礎(chǔ)上 定義服務(wù)器上的元數(shù)據(jù)
● 將數(shù)據(jù)從桌面轉(zhuǎn)化到服務(wù)器中
● 解決下列問(wèn)題
● 數(shù)據(jù)類型差異
● 數(shù)據(jù)安全性和完整性
● 事務(wù)控制
● 數(shù)據(jù)訪問(wèn)權(quán)
● 數(shù)據(jù)合法性
● 鎖定
Delphi提供了兩種方法適化一個(gè)數(shù)據(jù)庫(kù)
● 使用Database Desktop工具 選擇菜單Tools/Utilities/Copy to命令將數(shù)據(jù)庫(kù)表從桌面方式拷貝到SQL格式
● 建立應(yīng)用TBatchMove部件的應(yīng)用程序
這兩種方法都可以將表結(jié)構(gòu)和數(shù)據(jù)從桌面數(shù)據(jù)源轉(zhuǎn)化到服務(wù)器上 依靠這些數(shù)據(jù)庫(kù) 可能需要改變結(jié)果表 例如 可能想進(jìn)行不同數(shù)據(jù)類型的映射
也可以將下列特征加入數(shù)據(jù)庫(kù)
● 完整性約束
● 索引
● 檢測(cè)約束
● 存儲(chǔ)過(guò)程和觸發(fā)器
● 其它服務(wù)器特征
如果用SQL腳本和服務(wù)器數(shù)據(jù)定義工具定義元數(shù)據(jù)會(huì)更有效 然后用前面介紹的兩種方法轉(zhuǎn)移數(shù)據(jù) 因?yàn)槿绻鞘止ざx數(shù)據(jù)庫(kù)表 Database Desktop和TBatchMove 部件將只拷貝數(shù)據(jù)
適化應(yīng)用程序
在理論上 設(shè)計(jì)用來(lái)訪問(wèn)局部數(shù)據(jù)的Delphi應(yīng)用程序做很少的修改就可以訪問(wèn)遠(yuǎn)程服務(wù)器上的數(shù)據(jù) 如果在服務(wù)器上定義適合的數(shù)據(jù)源 你就能將應(yīng)用程序指向訪問(wèn)它 這只需簡(jiǎn)單地改變應(yīng)用程序中TTable或TQuery部件的DatabaseName屬性
實(shí)際上 在訪問(wèn)局部和過(guò)程數(shù)據(jù)源之間有許多重要的不同之處 Client/Server應(yīng)用程序必須解決大量的在桌面應(yīng)用中所沒(méi)有的問(wèn)題
任何Delphi應(yīng)用程序都能用TTable或TQuery部件訪問(wèn)數(shù)據(jù) 桌面應(yīng)用程序通常都是使用TTable部件 當(dāng)適化到SQL服務(wù)器上時(shí) 用TQuery會(huì)更有效 如果應(yīng)用程序要檢索大量記錄 則TQuery部件要略勝一籌
如果應(yīng)用程序使用統(tǒng)計(jì)或數(shù)學(xué)函數(shù) 那么在服務(wù)器上通過(guò)存儲(chǔ)過(guò)程執(zhí)行這些函數(shù)會(huì)更有效 因?yàn)榇鎯?chǔ)過(guò)程執(zhí)行更快 使用存儲(chǔ)過(guò)程還可以減少網(wǎng)絡(luò)負(fù)載 特別是大量行數(shù)據(jù)的函數(shù)
例如 計(jì)算大量記錄的標(biāo)準(zhǔn)差
● 如果該函數(shù)在客戶端執(zhí)行 所有的值從服務(wù)器上檢索出來(lái)并送到客戶端 導(dǎo)致網(wǎng)絡(luò)擁塞
● 如果該函數(shù)在服務(wù)器端執(zhí)行 則應(yīng)用程序只需要服務(wù)器上的答案
Delphi客戶/服務(wù)器應(yīng)用實(shí)例分析
本節(jié)中采用的實(shí)例是Delphi 數(shù)據(jù)庫(kù)的例子CSDEMO CSDEMO是Delphi客戶/服務(wù)器編程的示例程序 它采用的數(shù)據(jù)庫(kù)服務(wù)器是Local InterBase Server
CSDEMO較好地示范了BDE環(huán)境的配置 InterBASE Server高級(jí)功能應(yīng)用 SQL服務(wù)器聯(lián)接 觸發(fā)器應(yīng)用 存儲(chǔ)過(guò)程編程和事務(wù)控制技術(shù)等 具有較高的參考價(jià)值 本節(jié)講述下列內(nèi)容
● 數(shù)據(jù)庫(kù)環(huán)境介紹
● TDatabase的應(yīng)用
● 不同數(shù)據(jù)庫(kù)表的切換
● 觸發(fā)器編程
● 存儲(chǔ)過(guò)程編程
● 事務(wù)控制應(yīng)用
數(shù)據(jù)庫(kù)環(huán)境介紹
本例中采用的數(shù)據(jù)庫(kù)服務(wù)器是Local InterBase Server Local InterBase是InterBase Server的單用戶版 位 兼容ANSI SQL Local InterBase支持客戶/服務(wù)器應(yīng)用在單機(jī)上的開(kāi)發(fā)和測(cè)試 并且可以很容易地適化到InterBase Server上 因此 開(kāi)發(fā)客戶/服務(wù)器應(yīng)用采用Local InterBase作為原型開(kāi)發(fā)環(huán)境是很方便的
IBLOCAL的BDE參數(shù)
本例中的SQL數(shù)據(jù)庫(kù)是IBLOCAL 它是由BDE配置工具(BDECFG EXE)設(shè)置參數(shù)值 它的各項(xiàng)參數(shù)值列于下表
表 IBLOCAL的各項(xiàng)參數(shù)值
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
參 數(shù) 名 參 數(shù) 值
────────────────────────────────────
TYPE INTRBASE
PATH
SERVER NAME C:\INTRBASE\EXAMPLES\EMPLOYEE GDB
USER NAME SYSDBA
OPEN MODE READ/WRITE
SCHEMA CACHE SIZE
LANGDRIVER
SQLQRYMODE
SQLPASSTHRU MODE SHARED AUTOMIT
SCHEMA CHCHE TIME
MAX ROWS
BATCH COUNT
ENABLE SCHEMA CACHE FALSE
SCHEMA CACHE DIR
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
數(shù)據(jù)庫(kù)結(jié)構(gòu)介紹
IBLOCAL數(shù)據(jù)庫(kù)的結(jié)構(gòu)都是由InterBase服務(wù)器工具交互式SQL工具(ISQL)定義的
用ISQL定義數(shù)據(jù)庫(kù) 首先要用Create Database命令建立數(shù)據(jù)庫(kù) 建立的新數(shù)據(jù)庫(kù)一般是以GDB為擴(kuò)展名 建立好后 就可以用SQL語(yǔ)言定義數(shù)據(jù)庫(kù)表 例如建立EMPLOYEE表的SQL語(yǔ)句如下
定義域名數(shù)據(jù)類型
CREATE DOMAIN FIRSTNAME AS VARCHAR( )
CREATE DOMAIN LASTNAME AS VARCHAR( )
CREATE DOMAIN COUNTRYNAME AS VARCHAR( )
CREATE DOMAIN EMPNO AS ALLINT;
CREATE DOMAIN DEPTNO AS CHAR( )
CHECK (VALUE = OR (VALUE > AND VALUE )
CREATE DOMAIN JOBGRADE AS ALLINT
CHECK (VALUE BEEEN AND )
CREATE DOMAIN SALARY AS NUMERIC( )
DEFAULT
CHECK (VALUE > )
建立EMPLOYEE表
lishixinzhi/Article/program/Delphi/202311/25125
Delphi 開(kāi)發(fā)數(shù)據(jù)庫(kù)控件的方法[1]
Delphi作為一種目前十分流行的數(shù)據(jù)庫(kù)開(kāi)發(fā)語(yǔ)言 在數(shù)據(jù)庫(kù)開(kāi)發(fā)領(lǐng)域有著十分重要的地位 它不僅提供了可視化的開(kāi)發(fā)環(huán)境 使得開(kāi)發(fā)變得相對(duì)容易 而且還是一種面向?qū)ο蟮恼Z(yǔ)言 使得程序員能夠充分利用面向?qū)ο缶幊痰姆N種優(yōu)勢(shì)——如封裝 繼承等等 從而大大減輕了開(kāi)發(fā)的難度和工作量 下面 我們就談一談利用面向?qū)ο蟮奶匦詠?lái)開(kāi)發(fā)數(shù)據(jù)庫(kù)控件的方法
Delphi本身提供了一些數(shù)據(jù)庫(kù)控件 如DBGrid Table等 它們給開(kāi)發(fā)帶來(lái)了很多方便 下面我們來(lái)以一個(gè)能夠顯示數(shù)據(jù)表中的所有字段的控件為例來(lái)說(shuō)明如何用Delphi來(lái)進(jìn)行控件的編程
首先要為控件選擇一個(gè)合適的父類 Windows的一個(gè)好處就在于它將許多操作標(biāo)準(zhǔn)化了 通過(guò)這些標(biāo)準(zhǔn)的操作 使得學(xué)習(xí)和使用都有章可循 用戶就很容 易融會(huì)貫通地掌握整個(gè)系統(tǒng) 在Delphi中提供了許多控件 這些控件生成的應(yīng)用程序足以滿足Windows編程的要求 而一些新的控件也可以在此基礎(chǔ)上 產(chǎn)生 它一方面繼承了一部分控件標(biāo)準(zhǔn)的操作 另一方面也在程序中加入一些代碼來(lái)實(shí)現(xiàn)特定的功能 這樣用戶使用起來(lái)不會(huì)覺(jué)得突兀 也簡(jiǎn)化了程序的開(kāi)發(fā) 根據(jù) 我們的目標(biāo)可以看出 利用 下拉框 控件作為新控件的父類比較合適 因?yàn)樗峁┝讼吕蛑械乃袠?biāo)準(zhǔn)操作 這就可以大大減少我們的編程量 然后就是為 特定的功能編寫代碼 我們應(yīng)該想到 如果一個(gè)下拉框能夠顯示一個(gè)數(shù)據(jù)庫(kù)中的所有字段 那么它一定有一個(gè)屬性能夠與數(shù)據(jù)庫(kù)相連 我們將這個(gè)屬性定名為 DataSource 并將這一屬性添加到控件中 添加的方法是 首先在Private段中加入如下代碼
FDataLink:TFieldDataLink; function GetDataSource:TDataSource; Procedure SetDataSource( Value:TDataSource);
其中TfieldDataLink是一個(gè)十分重要的類 我們之所以能夠很容易地進(jìn)行數(shù)據(jù)庫(kù)控件的開(kāi)發(fā)全是拜它之賜 它有一些十分有用的屬性 如 DataSource 利用這個(gè)屬性 我們就能很容易地指定新控件的DataSource屬性
第三步就是為控件的功能編寫代碼 可以想到 如果我們想要在拉下下拉框時(shí)顯示數(shù)據(jù)庫(kù)中的所有字段 就要在它的DropDown事件中加入代碼來(lái)將所有 的字段加入到下拉框的下拉區(qū)域中 這應(yīng)該分兩步走 之一就是要取得指定數(shù)據(jù)庫(kù)的所有字段 第二就是將這些字段以字符串的格式加入到下拉框中(而拉下時(shí)顯示 所有字段的功能則由下拉框控件自己完成) 在取得數(shù)據(jù)庫(kù)的字段時(shí) 用到了我們上面提到的TfieldDataLink類 下面的代碼就可以獲得指定數(shù)據(jù)庫(kù) 的字段數(shù)目
j:= ; j:=FDataLink DataSource DataSet FieldCount ;//取得數(shù)據(jù)庫(kù)中的所有字段的名字 I:= ;
然后再用下面的代碼將這些字段的名字加入到下拉框的items屬性中 值得注意的是在每次拉下這個(gè)下拉框時(shí)都要將items屬性清空 否則這個(gè)下拉框?qū)⒚看味紩?huì)因加入重復(fù)的內(nèi)容而變得越來(lái)越長(zhǎng) 并且一次選擇可以選定許多項(xiàng) 使得控件看起來(lái)有點(diǎn)怪
items Clear ; //清空items屬性
repeat //循環(huán)操作將字段加入下拉框中
items Add (FDataLink DataSet Fields FieldName ); //將字段名加入到下拉框中
I:=I+ ;
until I>j- ; //直到所有的字段加入完為止
第四步 就是將以上代碼加入到Delphi的控件編輯窗口中去 點(diǎn)擊Delphi的 Component/New Component 菜單 系統(tǒng)出現(xiàn)一個(gè)對(duì)話框 將對(duì)話框如圖 所示填寫
填寫完畢點(diǎn)擊 OK 按鈕 就可以創(chuàng)建一個(gè)文件 將上面提供的代碼加入到文件的適當(dāng)位置 就可以完成這個(gè)控件的編寫 圖 是帶有這個(gè)控件的程序的例子
可以想見(jiàn) 這個(gè)控件有著十分廣泛的功能 例如 我們能夠利用它設(shè)置指定字段的值來(lái)運(yùn)行查詢 也可以返回?cái)?shù)據(jù)庫(kù)中指定字段的數(shù)據(jù)類型 長(zhǎng)度等信息 給我們的編程提供了極大的方便
但是也應(yīng)該看到 這個(gè)控件也有一些缺點(diǎn) 那就是它只能顯示字段的名稱 一般的數(shù)據(jù)庫(kù)中字段的名稱都是英文的 這給中文版的應(yīng)用軟件帶來(lái)不便 下面我們 就用FdataLink的另一個(gè)屬性來(lái)顯示中文化的字段 這個(gè)屬性就是DisplayName 它所指定的是數(shù)據(jù)庫(kù)字段的顯示名稱 而這個(gè)名稱我們可以在 設(shè)計(jì)時(shí)將其漢化 這樣在應(yīng)用程序中顯示出來(lái)的就是有意義的中文了
Delphi 數(shù)據(jù)庫(kù)編程
delphi的數(shù)據(jù)庫(kù)功能是很強(qiáng)悍的,常見(jiàn)的方搏派者法,使用ADO那羨咐套控件就可以了,至于數(shù)據(jù)庫(kù),你看ADO的連接選項(xiàng)里面,它支持很多數(shù)據(jù)庫(kù)的,sql server,mysql等常見(jiàn)數(shù)據(jù)庫(kù)肯定沒(méi)問(wèn)題的。關(guān)鍵看你的需求,以及你對(duì)哪種數(shù)據(jù)庫(kù)比較熟悉?;?/p>
暈,都是說(shuō)的遠(yuǎn)程啊
Delphi + SqlServer
1.將Ado選項(xiàng)卡中滑滲的Adoconnection 和 AdoQuery拖入頁(yè)面中,將DataAccess中的Datasource拖入頁(yè)面。
2.雙擊Adoconnection,點(diǎn)擊“build”,點(diǎn)擊“提供程序”,選擇“Microsoft ole db provider for SQL Server”,點(diǎn)擊“下一步”,輸入數(shù)據(jù)庫(kù)的用戶名和密碼,選中“允許保存密碼”,然后選擇數(shù)據(jù)庫(kù),點(diǎn)擊“測(cè)試鏈接”,成功后信物脊點(diǎn)螞睜擊確定,然后點(diǎn)擊OK。
將Adoconnection的LoginPrompt屬性設(shè)置為False.
3.設(shè)置AdoQuery的Connection屬性為Adoconnection(下拉選擇),將Datasource的DataSet屬性設(shè)置為AdoQuery(下拉選擇)。
4.在Dbgrid中設(shè)置Datasource屬性為Datasource(下拉選擇)。
5.AdoQuery.Close;
AdoQuery.SQL.Clear;
AdoQuery.SQL.Add(‘select * from table’);
AdoQuery.Open;
用三層會(huì)更好
當(dāng)然直接客戶對(duì)服務(wù)器也行SQL2023使用的是1033端口,確保沒(méi)圓該端口已經(jīng)對(duì)外網(wǎng)開(kāi)放,然后直接枯瞎塌神毀使用字符串連接即可
sql 2023等都行,開(kāi)發(fā)數(shù)據(jù)庫(kù)是selphi的優(yōu)勢(shì)。
關(guān)于delphi數(shù)據(jù)庫(kù)開(kāi)發(fā)及精彩實(shí)例的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開(kāi)通再付費(fèi)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開(kāi)發(fā)老牌服務(wù)商!微信小程序開(kāi)發(fā),APP開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站營(yíng)銷推廣服務(wù)眾多企業(yè)。電話:028-86922220
分享名稱:Delphi數(shù)據(jù)庫(kù):實(shí)現(xiàn)與實(shí)例 (delphi數(shù)據(jù)庫(kù)開(kāi)發(fā)及精彩實(shí)例)
本文URL:http://fisionsoft.com.cn/article/cdsidgs.html


咨詢
建站咨詢
