|
|
|
|
Delphi 是 Borland
公司出品,是個非常成熟的分散式應用系統開發工具,不但支援 Windows 平台下所有的分散式技術,更重要是它支援 XML
標準的技術,因此允許軟体開發人員可以結合應用程式伺服器而開發出高延展性的分散式應用系統。Delphi 在資料庫應用程式開發領域中,提供包括
Database Desktop、Data Access、Data Control 與 InstallShield 等好用的元件。
|
|
|
1. 建立與設定與
Oracle 的連線 |
|
|
執行 BDE
Administrator,如下圖所示。BDE Administrator
主要是用來完成資料庫應用程開發的第一步。主要的工作是:一. 建立「資料庫驅動程式(Driver)」,二.
建立「資料庫別名(Alias)」。一般而言,同一種資料庫只要一個驅動程式即可;對同一個資料庫,我們可以建立多個資料庫別名。 |
|
首先設定 Oracle
驅動程式,點選 ORACLE 並設定 Configuration 中 DLL32 為“SQLORA8.DLL”;VENDOR
INIT為“OCI.DLL”;LANGDRIVER 為“Oracle SQL WE850”;SQLPASSTHRU MODE
為“SHARED NOAUTOCOMMIT”,修改完後,按 Ctrl-A,並按“OK”以儲存修改的設定,如圖所示。 |
|
設定資料庫,點選“Database”並按右鍵並選“New”,如圖所示。 |
|
選定資料庫使用的驅動程式,在
New Database Alias 的視窗中點選剛才設定好的 Oracle 驅動程式並取名,例如:ORACLE1,如圖所示。 |
|
假設事前已利用 Net8
Easy Config 設定好了伺服器 JP8i。修改 Definition 中的 SERVER
NAME,例如:JP8I,修改完後,按
+
並按“OK”以儲存修改的設定,然後結束
BDE Administrator,如圖所示。 |
|
再重新執行 BDE
Administrator,點選剛才設定的資料庫兩下,進行連線測試,並在 Database Login 視窗中鍵入 Oracle
的使用者與密碼,如圖所示。 |
|
如果連線成功的話,會出現以下的畫面。 |
|
|
|
2. 利用 Delphi
設計一個簡單的表單 |
|
|
執行執行
Delphi,如圖所示。 |
|
執行 File→ New
Application,如圖所示。 |
|
點選兩次“Data
Access”資料夾中的“Data Source”與“Table”兩個元件,表單中會產生“Data
Source”與“Table”兩個元件,如圖所示。 |
|
點選兩次“Data
Access”資料夾中的“DBGrid”元件,表單中會產生“DBGrid”元件,如圖所示。 |
|
修改“Table”元件的屬性內容:設定 Active 屬性為 True;設定 DatabaseName 屬性為原先在 BDE
Administrator 中設定的資料庫名稱,例如:ORACLE1;設定 TableName
屬性為連線使用者的表格,例如:EMP,如圖所示。 |
|
修改“DataSource”元件的屬性內容:設定 DataSet 的屬性為剛才設定的 Table
元件,例如:Table1,如圖所示。 |
|
修改 DBGrid
元件的屬性內容:設定 DataSource 的屬性為剛才設定之 DataSource
元件,例如:DataSource1,如圖所示:
按
登入資料庫並執行表單,如圖所示。 |
|
執行的結果如圖所示。 |
|
|
|
|
ADO(ActiveX Data
Objects) 最初是由 Microsoft 所製定的,它是一組能提供應用軟體中的程式透過 OLE DB Provider
來存取資料庫中資料的元件。一般在網頁中常使用的 ASP(Active Server Pages) 中就是利用 ADO 透過 ODBC(Open
Database Connectivity) 來存取各種資料庫的資料。Dephi 6 以後的版本所提供的 ADO 元件則是將整個
Microsoft ADO 元件加以封裝並以 VCL(Visual Component Library) 元件呈現,透過 ADO
元件您所開發的資料庫應用軟體完全不需要依賴 BDE(Borland Database Engine)。以下章節中我們將介紹幾種利用 ADO
元件開發應用軟體:
|
|
使用工作列中 「ADO」
標籤頁中 TADOConnection 物件與 TADOTable 物件來建立與 Oracle
資料庫的連結,這種方法直接利用資料庫的表格作為 Dephi 表單的資料來源。 |
|
使用工作列中 「ADO」
標籤頁中 TADOConnection 物件與 TADOQuery 物件來建立與 Oracle 資料庫的連結,這種方法主要是利用
SQL 查詢的結果作為 Dephi 表單的資料來源。 |
|
使用工作列中 「ADO」
標籤頁中 TADOConnection 物件與 TADODataSet 物件來建立與 Oracle 資料庫的連結,這種方法類似
VB 的 ADODC 資料來源的設定。 |
|
使用工作列中 「ADO」
標籤頁中 TADOTable 物件來建立與 Oracle 資料庫的連結,這種方法直接利用資料庫的表格作為 Dephi
表單的資料來源。 |
|
使用工作列中 「ADO」
標籤頁中 TADOQuery 物件來建立與 Oracle 資料庫的連結,這種方法直接利用資料庫的查詢作為 Dephi
表單的資料來源。 |
|
使用工作列中 「ADO」
標籤頁中 TADODataSet 物件來建立與 Oracle 資料庫的連結,這種方法類似 VB 的 ADODC 資料來源的設定。
|
|
|
|
|
|
使用工作列中 「ADO」 標籤頁中
TADOConnection 物件與 TADOTable 物件來建立與 Oracle 資料庫的連結,這種方法直接利用資料庫的表格作為 Dephi
表單的資料來源。
|
|
建立新的專案。
|
|
在表單中加入一個
TADOConnection 元件,並點選 TADOConnection 元件屬性中的 ConnectionString
屬性,來開啟 ConnectionString 的對話框。選擇「Use Connection
String」選項,並按下「Build」按鈕。 |
|
此時會出現「Data Link
Properties」對話框,請點選「Microsoft OLE DB Provider for
Oracle」,並按下「Next」按鈕。 |
|
請在「Connection」標籤頁中指定要連接的 Oracle 資料庫名稱、使用者帳號與密碼。這裡我們以使用者帳號 scott
為例。 除了直接在「Connection」標籤頁中指定使用者帳號與密碼外,也可以省略本步驟,直接在表單中 Tform 物件的
onCreate 事件處理程序中加入指定使用者帳號與密碼,程式如下:
|
|
procedure
Tform1.FormCreate(Sender: Tobject);
var
I: Integer;
begin
Try
with ADOConnection1 do //連結資料庫
begin
Close;
LoginPropt:=False;
Open(‘scott’,’tiger’);
For I:=0 to DataSetCount-1 do
DataSets[I].open;
end;
except
on E:Exception do //例外處理
begin
ShowMessage(E.Message);
Halt;
end;
end; |
|
設定完成後,可以利用「Test
Connect」按鈕來進行測試。如果設定無誤,則系統會回覆「Test connection succeeded」。 |
|
最後按下「Data Link
Properties」對話框中的「確定」按鈕,再按下原 ConnectionString 的對話框中的「OK」按鈕以完成TADOConnection
元件屬性中的 ConnectionString 屬性的設定。原ConnectionString
屬性會自動設定成「Provider = MSDAORA.1; Password=tiger; User ID=scott;
Data Source=JP8i; Persist Security Info=True」。 |
|
將工作列中 「ADO」
標籤頁中的 TADOTable 元件、 「Data Access」 標籤頁中的 TDataSource 元件與「Data
Control」 標籤頁中的 TDBGrid 物件、TDBNavigator 元件加入表單中,其個元件相關設定如下表格:
|
|
|
物件 |
屬性名稱
|
屬性設定值
|
TADOTable
|
Name
|
ADOTable1 |
Connection
|
ADOConnection1 |
TableName
|
EMP
|
Active
|
True
|
TDataSource
|
Name |
DataSource1
|
DataSet
|
ADOTable1
|
TDBGrid
|
Name
|
DBGrid1
|
DataSource
|
DataSource1
|
TDBNavigator |
Name
|
DBNavigator1 |
DataSource
|
DataSource1
|
|
其中,TADOTable 元件屬性 TableName 設定資料來源的表格,在例子中我們以 EMP 表格為例。
|
|
完成後的表單如下: |
|
儲存專案並按下 F9
功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
|
|
|
|
使用工作列中 「ADO」 標籤頁中
TADOConnection 物件與 TADOQuery 物件來建立與 Oracle 資料庫的連結,這種方法主要是利用 SQL 查詢的結果作為
Dephi 表單的資料來源。
|
至
|
與前面介紹的相同,主要是設定
TADOConnection 物件與 Oracle 資料的連結。 |
|
將工作列中 「ADO」
標籤頁中的 TADOQuery 元件、 「Data Access」 標籤頁中的 TDataSource 元件與「Data
Control」 標籤頁中的 TDBGrid 物件、TDBNavigator 元件加入表單中,其個元件相關設定如下表格:
|
物件 |
屬性名稱
|
屬性設定值 |
TADOQuery |
Name |
ADOQuery1 |
Connection |
ADOConnection1 |
SQL
|
SQL指令
|
Active
|
True |
TDataSource
|
Name
|
DataSource1 |
DataSet
|
ADOQuery1 |
TDBGrid
|
Name |
DBGrid1
|
DataSource |
DataSource1 |
TDBNavigator
|
Name
|
DBNavigator1 |
DataSource |
DataSource1 |
|
其中點選 TADOQuery 元件中屬性 「SQL」,會出現 SQL 指令的對話框,我們可以輸入 SQL
指令作為資料來源。這裡我們以輸入「select empno, ename, job, sal, deptno from emp
where sal > 2000」(員工薪資大於2000)為例:
|
|
完成後的表單如下:儲存專案並按下 F9 功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
|
儲存專案並按下 F9
功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
|
|
|
|
使用工作列中 「ADO」 標籤頁中
TADOConnection 物件與 TADODataSet 物件來建立與 Oracle 資料庫的連結,這種方法類似 VB 的 ADODC
資料來源的設定。 |
至
|
與前面介紹的相同,主要是設定
TADOConnection 物件與 Oracle 資料的連結。其中設定 TADODataSet 元件屬性中的
commandType 與 commandText 來設定資料來源。TADODataSet 元件屬性中的 commandType
可以分為:(1) cmdFile,(2) cmdStoredProc,(3)
cmdTable,(4) cmdTableDirect,(5) cmdText,(6) cmdUnknown 六種。這些commandType
種類類似 VB 的 ADODC 資料來源的設定。這裡我們介紹 cmdText 與 cmdTable 兩種。 |
|
將工作列中 「ADO」
標籤頁中的 TADODataSet 元件、 「Data Access」 標籤頁中的 TDataSource 元件與「Data
Control」 標籤頁中的 TDBGrid 物件、TDBNavigator 元件加入表單中,其個元件相關設定如下表格:
|
物件 |
屬性名稱
|
屬性設定值 |
TADODataSet |
Name
|
ADODataSet1 |
Connection |
ADOConnection1 |
CommandType |
詳見下面說明 |
CommandText |
詳見下面說明
|
Active
|
True |
TdataSource
|
Name
|
DataSource1 |
DataSet
|
ADODataSet1 |
TDBGrid
|
Name
|
DBGrid1
|
DataSource |
DataSource1 |
TDBNavigator
|
Name
|
DBNavigator1 |
DataSource |
DataSource1 |
|
其中點選 TADOQuery 元件中屬性 「SQL」,會出現 SQL 指令的對話框,我們可以輸入 SQL
指令作為資料來源。這裡我們以輸入「select empno, ename, job, sal, deptno from emp
where sal > 2000」(員工薪資大於2000)為例:
|
「cmdTable」
|
若是資料來源為資料庫表格,則設定 commandType 為 cmdTable 並且設定 commandText
為資料庫表格名稱。這裡我們設定 commandText 為資料庫表格 EMP。 |
「cmdText」
|
若是資料來源為 SQL
查詢,則設定 commandType 為 cmdText 並且設定 commandText 為 SQL 指令。點選
commandText 會進入 commandText 的編輯對話框,這時你可以輸入 SQL 指令查詢。這裡我們設定 SQL
指令為「select empno, ename, job, sal, deptno from emp where sal >
2000」(員工薪資大於2000) |
「cmdTable」
|
完成後的表單如下: |
「cmdText」
|
完成後的表單如下: |
「cmdTable」
|
儲存專案並按下 F9
功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
「cmdText」
|
儲存專案並按下 F9
功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
|
|
|
|
|
除了利用工作列中 「ADO」 標籤頁中
TADOConnection 物件與 TADOTable 物件來建立與 Oracle 資料庫的連結外,亦可以直接利用TADOTable
物件來建立與 Oracle 資料庫的連結。使用工作列中 「ADO」 標籤頁中 TADOTable 物件來建立與 Oracle
資料庫的連結,這種方法直接利用資料庫的表格作為 Dephi 表單的資料來源。
|
|
建立新的專案。 |
|
在表單中加入一個
TADOTable 元件,並點選 TADOTable 元件屬性中的 ConnectionString 屬性,來開啟
ConnectionString 的對話框。選擇「Use Connection String」選項,並按下「Build」按鈕。 |
|
此時會出現「Data Link
Properties」對話框,請點選「Microsoft OLE DB Provider for
Oracle」,並按下「Next」按鈕。
|
|
請在「Connection」標籤頁中指定要連接的 Oracle 資料庫名稱、使用者帳號與密碼。這裡我們以使用者帳號 scott
為例。 |
|
設定完成後,可以利用「Test
Connect」按鈕來進行測試。如果設定無誤,則系統會回覆「Test connection succeeded」。 |
|
最後按下「Data Link
Properties」對話框中的「確定」按鈕,再按下原 ConnectionString 的對話框中的「OK」按鈕以完成TADOTable
元件屬性中 ConnectionString 屬性的設定。原 ConnectionString
屬性會自動設定成「Provider = MSDAORA.1; Password=tiger; User ID=scott;
Data Source=JP8i; Persist Security Info=True」。 |
|
將工作列中 「Data
Access」 標籤頁中的 TDataSource 元件與「Data Control」 標籤頁中的 TDBGrid、物件TDBNavigator
元件加入表單中,其個元件相關設定如下表格: |
|
|
物件 |
屬性名稱
|
屬性設定值 |
TADOTable |
Name
|
ADOTable1 |
ConnectionString |
詳見上面說明
|
TableName |
EMP |
Active
|
True
|
TDataSource
|
Name
|
DataSource1 |
DataSet
|
ADOTable1 |
TDBGrid
|
Name
|
DBGrid1
|
DataSource |
DataSource1 |
TDBNavigator
|
Name
|
DBNavigator1 |
DataSource |
DataSource1 |
|
其中,TADOTable 元件屬性 TableName 設定你資料來源的表格,在例子中我們以 EMP 表格為例。 |
|
完成後的表單如下: |
|
儲存專案並按下 F9
功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
|
|
|
|
|
除了利用工作列中 「ADO」 標籤頁中
TADOConnection 物件與 TADOQuery 物件來建立與 Oracle 資料庫的連結外,亦可以直接利用TADOQuery
物件來建立與 Oracle 資料庫的連結。使用工作列中 「ADO」 標籤頁中 TADOQuery 物件來建立與 Oracle
資料庫的連結,這種方法直接利用資料庫的查詢作為 Dephi 表單的資料來源。
|
|
建立新的專案。 |
|
在表單中加入一個
TADOQuery 元件,並點選 TADOQuery 元件屬性中的 ConnectionString 屬性,來開啟
ConnectionString 的對話框。選擇「Use Connection String」選項,並按下「Build」按鈕。 |
|
此時會出現「Data Link
Properties」對話框,請點選「Microsoft OLE DB Provider for
Oracle」,並按下「Next」按鈕。
|
|
請在「Connection」標籤頁中指定要連接的 Oracle 資料庫名稱、使用者帳號與密碼。這裡我們以使用者帳號 scott
為例。 |
|
設定完成後,可以利用「Test
Connect」按鈕來進行測試。如果設定無誤,則系統會回覆「Test connection succeeded」。
|
|
最後按下「Data Link
Properties」對話框中的「確定」按鈕,再按下原 ConnectionString 的對話框中的「OK」按鈕以完成TADOQuery
元件屬性中的 ConnectionString 屬性的設定。原ConnectionString
屬性會自動設定成「Provider = MSDAORA.1; Password=tiger; User ID=scott;
Data Source=JP8i; Persist Security Info=True」。 |
|
將工作列中 「Data
Access」 標籤頁中的 TDataSource 元件與「Data Control」 標籤頁中的 TDBGrid、物件TDBNavigator
元件加入表單中,其個元件相關設定如下表格: |
|
|
物件 |
屬性名稱
|
屬性設定值 |
TADOQuery |
Name
|
ADOQuery1 |
ConnectionString |
詳見上面說明
|
SQL |
SQL指令 |
Active
|
True
|
TDataSource
|
Name
|
DataSource1 |
DataSet
|
ADOQuery1 |
TDBGrid
|
Name
|
DBGrid1
|
DataSource |
DataSource1 |
TDBNavigator
|
Name
|
DBNavigator1 |
DataSource |
DataSource1 |
|
其中點選 TADOQuery 元件中屬性 「SQL」,會出現 SQL 指令的對話框,我們可以輸入 SQL
指令作為資料來源。這裡我們以輸入「select empno, ename, job, sal, deptno from emp
where sal > 1500」(員工薪資大於1500)為例: |
|
完成後的表單如下: |
|
儲存專案並按下 F9
功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
|
|
|
|
|
除了利用工作列中 「ADO」 標籤頁中
TADOConnection 物件與 TADODataSet 物件來建立與 Oracle 資料庫的連結外,亦可以直接利用TADODataSet
物件來建立與 Oracle 資料庫的連結。使用工作列中 「ADO」 標籤頁中 TADODataSet 物件來建立與 Oracle
資料庫的連結,這種方法類似 VB 的 ADODC 資料來源的設定。
其中設定 TADODataSet 元件屬性中的 commandType 與 commandText 來設定資料來源。TADODataSet
元件屬性中的 commandType 可以分為:(1) cmdFile,(2)
cmdStoredProc,(3) cmdTable,(4) cmdTableDirect,(5) cmdText,(6) cmdUnknown
六種。這些commandType 種類類似 VB 的 ADODC 資料來源的設定。這裡我們介紹 cmdText 與
cmdTable 兩種。
|
|
建立新的專案。
|
|
在表單中加入一個
TADODataSet 元件,並點選 TADODataSet 元件屬性中的 ConnectionString 屬性,來開啟
ConnectionString 的對話框。選擇「Use Connection String」選項,並按下「Build」按鈕。 |
|
此時會出現「Data Link
Properties」對話框,請點選「Microsoft OLE DB Provider for
Oracle」,並按下「Next」按鈕。 |
|
請在「Connection」標籤頁中指定要連接的 Oracle 資料庫名稱、使用者帳號與密碼。這裡我們以使用者帳號 scott
為例。
|
|
設定完成後,可以利用「Test
Connect」按鈕來進行測試。如果設定無誤,則系統會回覆「Test connection succeeded」。 |
|
最後按下「Data Link
Properties」對話框中的「確定」按鈕,再按下原 ConnectionString 的對話框中的「OK」按鈕以完成TADODataSet
元件屬性中的 ConnectionString 屬性的設定。原ConnectionString
屬性會自動設定成「Provider = MSDAORA.1; Password=tiger; User ID=scott;
Data Source=JP8i; Persist Security Info=True」。 |
|
將工作列中 「Data
Access」 標籤頁中的 TDataSource 元件、 「Data Control」 標籤頁中的 TDBGrid 物件與
TDBNavigator 元件加入表單中,其個元件相關設定如下表格: |
|
|
物件 |
屬性名稱
|
屬性設定值 |
TADODataSet |
Name
|
ADODataSet1 |
ConnectionString |
詳見上面說明
|
CommandType |
詳見下面說明 |
CommandText |
詳見下面說明
|
Active
|
True |
TdataSource
|
Name
|
DataSource1 |
DataSet
|
ADODataSet1 |
TDBGrid
|
Name
|
DBGrid1
|
DataSource |
DataSource1 |
TDBNavigator
|
Name
|
DBNavigator1 |
DataSource |
DataSource1 |
|
其中點選 TADOQuery 元件中屬性 「SQL」,會出現 SQL 指令的對話框,我們可以輸入 SQL
指令作為資料來源。這裡我們以輸入「select empno, ename, job, sal, deptno from emp
where sal > 2000」(員工薪資大於2000)為例:
|
「cmdTable」
|
若是資料來源為資料庫表格,則設定 commandType 為 cmdTable 並且設定 commandText
為資料庫表格名稱。這裡我們設定 commandText 為資料庫表格 EMP。
|
「cmdText」
|
若是資料來源為 SQL
查詢,則設定 commandType 為 cmdText 並且設定 commandText 為 SQL 指令。點選
commandText 會進入 commandText 的編輯對話框,這時你可以輸入 SQL 指令查詢。這裡我們設定
commandText 為「select empno, ename, job, sal, deptno from emp
where sal > 1500」(員工薪資大於1500) |
「cmdTable」
|
完成後的表單如下: |
「cmdText」
|
完成後的表單如下: |
「cmdTable」
|
儲存專案並按下 F9
功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
「cmdText」
|
儲存專案並按下 F9
功能鍵執行專案。專案執行後,可以利用TDBNavigator 元件來移動資料指標。 |
|
|