程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> DELPHI多層分布式開發(2)(9)

DELPHI多層分布式開發(2)(9)

編輯:Delphi

效果就完全不同了,你可以方便的選擇數據庫和表:

然後組合適當的SQL語言,最終打開一個合適的表。

進一步考慮,組合新的SQL語言的時候最好要有字段名的數據,這不需要從服 務器得到,因為在多層情況下,ClIEntDataSet實際上起著Ttable或者Tquery相 似的作用,對數據庫的控制上,有幾乎相同的語言,例如記錄指針的移動,字段 數據的取得和寫入等等,這樣一來,你也可以直接使用這些方法來操縱數據庫。

再一次提醒大家,ClIEntDataSet是個功能強大非常重要的控件,在Delphi的 很多高級場合,都要使用到它。

當然,利用ClIEntDataSet,被打開數據庫的字段名表也很容易得到。

首先再加一個Combbox控件Combbox3。

把SQL 查詢的Button事件作如下修改:

procedure TForm1.Button1Click(Sender: TObject);
//首先要定義兩個變量
var i,N:integer;
begin
ClIEntDataSet1.Close;
ClIEntDataSet1.CommandText := Memo1.Lines.Text;
ClIEntDataSet1.Open;

//這是後加入的顯示子段名的程序

ComboBox3.Clear;
N:=ClientDataSet1.FIEldCount;
for I := 0 to N - 1 do
ComboBox3.Items.Add(ClientDataSet1.Fields[i].FIEldName);
ComboBox3.Text:=ComboBox3.items[0];

end;

事實上,FormCreate事件程序也要加入相應的程序,使一打開程序就有子段 名表顯示。

procedure TForm1.FormCreate(Sender: TObject);
var
//增加兩個定義
I,N: Integer;
DBNames: OleVariant;
DBTables: OleVariant;
begin
// 連上應用程序服務器
DCOMConnection1.Connected := True;

// 取得BDE所有設置的數據庫別名數據
DBNames := DCOMConnection1.APPServer.GetDatabaseNames;

// 假如有數據庫別名數據,則將其一個一個地加到ComboBox控件內
if VarIsArray(DBNames) then
for I := 0 to VarArrayHighBound(DBNames, 1) do
ComboBox1.Items.Add(DBNames[I]);

//把默認的數據庫顯示在第一個
ComboBox1.Text:='abc';

//顯示表名
DBTables := DCOMConnection1.APPServer.GetTableNames;
if VarIsArray(DBTables) then
for I := 0 to VarArrayHighBound(DBTables, 1) do
ComboBox2.Items.Add(DBtables[I]);
ComboBox2.Text:=ComboBox2.items[0];

//顯示字段名表,增加的程序
ComboBox3.Clear;
N:=ClientDataSet1.FIEldCount;
for I := 0 to N - 1 do
ComboBox3.Items.Add(ClientDataSet1.Fields[i].FIEldName);
ComboBox3.Text:=ComboBox3.items[0];
end; 

需要時,也可以寫入ComboBox3的雙擊事件:

好了,現在可以看看效果:

這些數據取得以後,你就可以把這個客戶程序做得更加方便通用,那就要看 你的想象力和程序設計的水平了,這裡的例子,主要是想提供客戶端使用DCOM提 供的方法的思想和規則,通過這樣的研究,您是不是對DCOM 和分布式數據庫的 問題有了更深的理解了呢?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved