大哥,瘦客戶機指的是硬件結構好不好。
網站建設哪家好,找成都創新互聯!專注于網頁設計、網站建設、微信開發、微信小程序定制開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了荊門免費建站歡迎大家使用!
你說的這種叫做b/s結構的程序,也就是瀏覽器/服務器結構的程序,在簡單一點就是網站。
你以前做的那種叫做c/s結構的程序,也就是客戶端/服務器結構的程序。
delphi如果要作b/s結構的程序似乎很難。b/s結構一般都用jsp、asp、asp.net、php等來作。
歡迎訪問我的論壇:)
期待您的支持:)
三層結構,客戶端通過 接口調用 連接 中間服務器,中間服務器,使用unidac等組件 充當數據引擎 連接數據庫。中間很多工作,都是 中間件 完成的,不用管
SQLD-IB.DLL 包含InterBase驅動程序和支持文件的動態鏈接庫SQLINT32.DLL
INTRBASE驅動類型 加在配置工具的驅動管理程序中以配置基本的Borland InterBase SQL Link驅動程序
INTRBASE別名類型 加入配置文件的別名以使建立聯接SQL服務器數據庫的別名
SQLD_IB.HLP 配置InterBase驅動程序的幫助文件
READLINK.TXT Borland SQL Links for Windows自述文件
INTERBAS.MSG InterBase消息文件,通常安裝上C:\INTERBASCONNECT.EXE 測試工作站和InterBase服務器連接情況的工具
REMOTE.DLL、 InterBase的支持動態鏈接庫
GDS.DLL、GDS32.DLL
將InterBase服務器描述 安裝過程修改工作站的SERVICES文件以增加用于加入SERVICES文件 InterBase 服務器訪問所需的協議描述 ,
如:gds- db3050/tcp
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
軟件項目中還應包括TCP/IP接口軟件
下表列出的文件給InterBase客戶端應用提供訪問Winsock1.1的接口
表18.8 TCP/IP接口軟件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
文 件 名 描 述
————————————————————————————————
MVWASYNC.EXE 異步通信模塊
VSL.INT TCP/1P傳輸初始化文件
WINSOCK.DLLWindows Socket動態鏈接庫
MSOCKLIB.DLL 將Windows Socket調用映射到VSL驅動程序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
如果TCP/IP產品不是Winsock1.1兼容,InterBase客戶端應用將也可采用其它TCP/1P 驅動程序。InterBase服務器還可支持其它通信協議,如SPX/1PX,NetBeIU等。
4. 解決一般的聯接問題
如果用SQL Links建立與InterBase服務器的連接有問題可采用下列步驟來分離問題原因:
⑴ 通過Windows ISQL工具測試能否與InterBase服務器聯接如果成功,狀態信息會出現,并繼續步驟⑵。如果不成功,詢問數據庫管理員。
⑵ 檢驗InterBase SQL Links 驅動程序是否正確安裝。
⑶ 重新安裝SQL Links。
⑷ 檢查SERVICES,文件中應有行:
gds_db 3050/tcp
如果不能正確安裝,就請詢問數據庫管理員,否則繼續步驟⑸。
⑸ 測試底層協議
① 輸入TELNET命令,確認TCP庫是否正確安裝。
如果TCP庫正確安裝,注冊提示符會出現。注冊入網檢查數據庫是否存在。
如果消息是“can't resolve hostname” 出現,檢查工作站的HOSTS文件是否有你 的主機名和IP地址的人口。如:128.127.50.12 mis_server
如果用TELNET是成功的,但仍然無法正確聯接,則沒有正確安裝InterBase。請尋求數據庫管理員的幫助。
② PING到服務器服務器上,測試InterBase服務器是否正常運行并且為桌面應用可見(如果PING是成功的,消息“servername isalive”被顯示)。PING成功但TELNET不成功,則inet daemon可能有問題。如果PING到服務器上不成功,則有網絡路徑問題,將問題報給網絡管理員。
如果底層協議不正常,請詢問數據庫管理員,否則繼續幫助⑹。
⑹ 確認是否有InterBase服務器的訪問權,如果有請繼續步驟⑺。
⑺ 檢查BDE應用程序的InterBase別名是否正確安裝。
如果能夠直接從工作站上聯接,但不能從BDE應用程序中,那么很有可能你的
IDAPI32.CFG別名設置有問題。運行BDE配置工具檢查InterBase別名。
18.3 Delphi Client/Server編程
本節介紹如何運用Delphi可視化開發工具和ObjectPascal語言開發Client\Server的數據庫應用程序,采用的例子是CSDEMOS。這是Delphi2.0自帶的演示Client\Server開發的例子,它安裝在C:\Program Files\Borland\Delphi 2.0\Demos\DB\CSDemos中(缺省安裝)。
本節將包含以下內容:
● 使用TDatabase部件連接SQL服務器
● 用DataSet部件(又稱數據集部件),如TTable和TQuery,聯接TDatabase部件并訪問數據庫以及各種表之間如何切換
● 使用數據庫連接
● 觸發器的使用方法
● TStoredProc部件的使用方法
● 客戶和服務器之間的事務控制
● TStoredProc部件的使用方法
18.3.1 使用TDatabase部件聯接SQL服務器
18.3.1.1 TDatabase部件概述
TDatabase部件處理應用程序與單個數據庫的聯接。如果不需要控制數據庫聯接,可以不用創建TDatabase部件。當應用程序試圖打開數據庫表(Table)時,會自動創建一個臨時的TDatabase部件。但如果你想控制數據庫的持續聯接、進入數據庫服務器的注冊和數據庫別名的值或事務控制,那么你就必須為每個所需的聯接創建一個TDatabase部件。
1. 創建TDatabase部件
TDatabase 部件在Component Palette中的Data Access頁上,你能將其拖放在數據模塊(Data module)或窗體中。在設計時創建TDatabase 部件,用戶可以設置初始值和編寫OnLogin事件處理過程(Event Handle)。OnLogin事件給用戶提供了第一次注冊數據庫服務器時定制服務器安全參數,如口令,的能力。
2. TDatabase的關鍵屬性
⑴ DatabaseName屬性
DatabaseName是所要聯接的數據庫名,并且用于DataSet軟件,它將出現在DataSet部件的DatabaseName屬性的下拉式列表框中。設置DataBaseName屬性是定義數據庫應用的特定別名。DataSet部件能引用該名字以取代直接使用BDE別名。當TDatabase部件的Connected屬性為True時不能修改該屬性。
⑵ AliaName屬性
AliasName是BDE配置工具定義的BDE別名的名字。TDatabase 從中獲取其缺省的設置。如果設置DriveName屬性,則該屬性將被清除,如果當Connected為True時強行設置DriveName屬性將引發異常。
⑶ DriveName屬性
DriveName是BDE驅動程序,如STANDARD 、ORACLE、SYBASE、INFORMIX或INTERBASE的名字。如果設置AliasName,則該屬性值將被清除。
⑷ Params屬性
Params屬性包含了打開SQL服務器上數據庫時所需的參數。在缺省情況下,這些參數由BDE配置工具設置;用戶也可以用數據庫參數編輯器(Database Parameters Editor)修改這些參數。對于數據庫服務器而言,Params將描述一系列的參數,如服務器名、 數據庫名、用戶名和口令。
⑸ Connected屬性
Connected屬性指明是否建立數據庫的聯接,當應用程序打開數據庫中的一個表時Connected將被置為True;反之,關閉數據庫表,Connected將被置為False,除非KeepConnection為True。而將Connected置為True則可不需打開數據庫表即可建立數據庫聯接。TDatabase的KeepConnection屬性描述當數據庫中沒有表打開時是否維持數據庫聯連。
⑹ KeepConnection屬性
KeepConnection屬性描述當數據庫中沒有打開表時是否要保持與服務器的聯連, 如果數據庫應用需要打開和關閉單個數據庫中的多個表時,將KeepConnection 設置為True是很有用的,那樣,即使沒有打開任何表,應用仍能保持與數據庫的聯接,它能夠重復地打開和關閉數據庫表,而不需要重復執行聯接過程。如果KeepConnection置為False,當每次將Connected置為True,數據庫都必須執行注冊過程。
⑺ LoginPrompt屬性
LoginPrompt屬性用于控制如何處理SQL數據庫的安全性問題。如置為True,當應用程序試圖建立數據庫聯接時屏幕上將出現標準Delphi注冊對話框。用戶必須輸入正確的用戶名和口令。如果置為False,則應用程序將尋找TDatabase部件的Params 屬性中的注冊參數。下面是USERNAME和PASSWORD參數的例子:
USERNAME = SYSDBA
PASSWORD = masterkey
⑻ TransIsolation屬性
TransIsolation屬性描述SQL服務器所有的事務控制獨立級別。 tiDirtyRead使所有修改都被返回,而不管記錄是否已被提交。tiReadCommitted將只返回提交的記錄,而提交的修改將不會在結果中反映出來。tiRepeatableRead 將只返回事務過程中最初的記錄,即使另一個應用程序將所作的修改提交。
各種數據庫服務器可能不同程度地支持這些獨立級別,或者根本不支持。 如果需要的獨立級別不被服務器支持,那么Dephi將使用下一個更高的獨立級別,如下表所示:
表18.10 各類服務器TransIsolation設置
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
獨立級別 Oracle Sybase和 InterBase
Microsoft SQL
——————————————————————————————————————
Dirty Read Read Committed Read Committed Read Committed
Read Committed Read Committed Read Committed Read Committed
Repeatable read Repeatable read Not Supported Repeatable Read
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
各個獨立級別的含義請見表18.12。
3. TDatabase的關鍵方法
⑴ StartTransaction方法
StartTransartion方法在由TaransIsolation屬性指定的獨立級別下開始事務控制。如果在一個事務已被激活的情況下調用該方法,Delphi將引發異常。
調用了該方法后,對數據庫所做的修改一直由數據庫服務器維持到調用Commmit方法提交數據或調用Rollback方法取消修改為止。只有當聯接數據庫服務器時,才能調用該方法。
⑵ Rollback方法
Rollback方法返轉當前事務控制,并且取消自最近一次調用StartTransaction以來對數據庫所做的所有修改。
⑶ Commit方法
Commit方法提交當前事務控制,并且將自最近一次調用StartTransaction以來所有數據修改存入數據庫。
4. TDatabase的OnLogin事件的處理
OnLogin事件的觸發條件是當聯接SQL數據庫的TDatabase部件被打開并且LoginPrompt屬性為True。使用OnLogin事件處理過程可以在運行時設置注冊參數。OnLogin 事件處理過程得到TDatabase的注冊參數數組Params,并且使用Values屬性改變這些參數。
例如:
LoginParams.Vaiues['SERVERNAME'] := 'MYSERVERNAME';
LoginParams.Values['USER NAME'] := 'MYUSERNAME';
LoginParams.Values[PASSWORD'] := 'MYAPSSWORD';
當控制從OnLogin事件處理過程中返回時,應用程序用這些參數來建立聯接。
OnLogin事件處理過程的聲明是這樣的:
TLoginEvent = procedure(Database: TDatabase;LoginParam: TStrings) of Object;
property OnLogin: TLoginEvent;
TLoginEvent類型是處理OnLogin事件的方法頭。Database參數是要聯接的數據庫。LoginParams是TStrings類型的對象,包含用戶名和口令,以及打開數據庫時所用的其它參數。用戶名是形如USER NAME = John.Doe的字符串,口令是形如PASSWORD = is_Password的字符串。當OnLogin事件處理過程被調用時應當在LoginParams中加入用戶名和口令。
18.3.1.2 定制數據庫服務器的注冊參數
大多數數據庫服務器都包含限制數據庫訪問的安全特征。通常,在用戶能訪問數據庫之前,服務器都要求注冊的用戶名和口令。
如果服務器需要注冊,在設計階段,Delphi 會在你試圖聯接時提示你,諸如在會TTable部件描述數據庫表名時。
在缺省情況下,Delphi應用在打開數據庫服務器的聯接時,顯示標準注冊對話框。如果聯接已建立,則注冊對話框不會出現。
可以用下列方法處理服務器注冊:
1. 將TDatabase部件的LoginPrompt屬性置為True。這樣,當應用程序試圖建立數據庫聯接時,標準注冊對話框會打開。
2. 將LoginPrompt屬性置為False,在TDatabase部件的Params屬性中包含用戶名和口令參數。例如:
USERNAME = SYSDBA
PASSWORD = mosterkey
但不推薦使用該方法,因為這會危害數據庫安全
3. 使用TDatabase部件的OnLogin事件設置注冊參數。OnLogin事件得到TDatabase 注冊參數數組的拷貝,并利用Values屬性改變這些參數。如:
LoginParams.Values['SERVER NAME']:= 'MYSERVERNAME';
LoginParams.Values['USER NAME'] :='MYUERNAME';
LoginParams.Values['PASSWORD'] := 'MYPASSWORD';
當控制從數據庫注冊事件處理過程中返回時,這些參數被用來建立聯接。
18.3.1.3 建立應用程序特定的別名
TDatabase的Aliases描述了數據庫表的位置和數據庫服務器的聯接參數。通常都是在Delphi之外,運用BDE配置工具(BDECFG32.EXE)創建別名,并且別名被存在BDE 配置文件IDAPI32.CFG中。
用戶也可以用TDatabase創建只在應用程序中可用的別名,用TDatabase創建的別名不會加進BDE配置文件中。任何DataSet部件可通過描述DatabaseName 屬性來使用這些別名。為了定制這些局部別名的參數,用鼠標左鍵雙擊TDatabase部件或從TDatabase部件中選擇Database Editor,Delphi就會打開數據庫屬性編輯器(Database Properties Editor)。
這只是其中一部分
....更多的請點網址
分享文章:delphi三層服務器連接安全 delphi 三層
鏈接URL:http://m.newbst.com/article48/doppjep.html
成都網站建設公司_創新互聯,為您提供網站營銷、、App設計、建站公司、App開發、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯