成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

delphi三層服務(wù)器連接安全 delphi 三層

DELPHi分布式多層設(shè)計(jì),的瘦客戶機(jī)的理解

大哥,瘦客戶機(jī)指的是硬件結(jié)構(gòu)好不好。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了荊門(mén)免費(fèi)建站歡迎大家使用!

你說(shuō)的這種叫做b/s結(jié)構(gòu)的程序,也就是瀏覽器/服務(wù)器結(jié)構(gòu)的程序,在簡(jiǎn)單一點(diǎn)就是網(wǎng)站。

你以前做的那種叫做c/s結(jié)構(gòu)的程序,也就是客戶端/服務(wù)器結(jié)構(gòu)的程序。

delphi如果要作b/s結(jié)構(gòu)的程序似乎很難。b/s結(jié)構(gòu)一般都用jsp、asp、asp.net、php等來(lái)作。

歡迎訪問(wèn)我的論壇:)

期待您的支持:)

delphi ORACLE三層架構(gòu)的服務(wù)端開(kāi)發(fā)

三層結(jié)構(gòu),客戶端通過(guò) 接口調(diào)用 連接 中間服務(wù)器,中間服務(wù)器,使用unidac等組件 充當(dāng)數(shù)據(jù)引擎 連接數(shù)據(jù)庫(kù)。中間很多工作,都是 中間件 完成的,不用管

請(qǐng)問(wèn)如何用Delphi創(chuàng)建客戶端和服務(wù)器,并且將客戶端與服務(wù)器鏈接

SQLD-IB.DLL 包含InterBase驅(qū)動(dòng)程序和支持文件的動(dòng)態(tài)鏈接庫(kù)SQLINT32.DLL

INTRBASE驅(qū)動(dòng)類型 加在配置工具的驅(qū)動(dòng)管理程序中以配置基本的Borland InterBase SQL Link驅(qū)動(dòng)程序

INTRBASE別名類型 加入配置文件的別名以使建立聯(lián)接SQL服務(wù)器數(shù)據(jù)庫(kù)的別名

SQLD_IB.HLP 配置InterBase驅(qū)動(dòng)程序的幫助文件

READLINK.TXT Borland SQL Links for Windows自述文件

INTERBAS.MSG InterBase消息文件,通常安裝上C:\INTERBASCONNECT.EXE 測(cè)試工作站和InterBase服務(wù)器連接情況的工具

REMOTE.DLL、 InterBase的支持動(dòng)態(tài)鏈接庫(kù)

GDS.DLL、GDS32.DLL

將InterBase服務(wù)器描述 安裝過(guò)程修改工作站的SERVICES文件以增加用于加入SERVICES文件 InterBase 服務(wù)器訪問(wèn)所需的協(xié)議描述 ,

如:gds- db3050/tcp

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

軟件項(xiàng)目中還應(yīng)包括TCP/IP接口軟件

下表列出的文件給InterBase客戶端應(yīng)用提供訪問(wèn)Winsock1.1的接口

表18.8 TCP/IP接口軟件

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

文 件 名 描 述

————————————————————————————————

MVWASYNC.EXE 異步通信模塊

VSL.INT TCP/1P傳輸初始化文件

WINSOCK.DLLWindows Socket動(dòng)態(tài)鏈接庫(kù)

MSOCKLIB.DLL 將Windows Socket調(diào)用映射到VSL驅(qū)動(dòng)程序

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

如果TCP/IP產(chǎn)品不是Winsock1.1兼容,InterBase客戶端應(yīng)用將也可采用其它TCP/1P 驅(qū)動(dòng)程序。InterBase服務(wù)器還可支持其它通信協(xié)議,如SPX/1PX,NetBeIU等。

4. 解決一般的聯(lián)接問(wèn)題

如果用SQL Links建立與InterBase服務(wù)器的連接有問(wèn)題可采用下列步驟來(lái)分離問(wèn)題原因:

⑴ 通過(guò)Windows ISQL工具測(cè)試能否與InterBase服務(wù)器聯(lián)接如果成功,狀態(tài)信息會(huì)出現(xiàn),并繼續(xù)步驟⑵。如果不成功,詢問(wèn)數(shù)據(jù)庫(kù)管理員。

⑵ 檢驗(yàn)InterBase SQL Links 驅(qū)動(dòng)程序是否正確安裝。

⑶ 重新安裝SQL Links。

⑷ 檢查SERVICES,文件中應(yīng)有行:

gds_db 3050/tcp

如果不能正確安裝,就請(qǐng)?jiān)儐?wèn)數(shù)據(jù)庫(kù)管理員,否則繼續(xù)步驟⑸。

⑸ 測(cè)試底層協(xié)議

① 輸入TELNET命令,確認(rèn)TCP庫(kù)是否正確安裝。

如果TCP庫(kù)正確安裝,注冊(cè)提示符會(huì)出現(xiàn)。注冊(cè)入網(wǎng)檢查數(shù)據(jù)庫(kù)是否存在。

如果消息是“can't resolve hostname” 出現(xiàn),檢查工作站的HOSTS文件是否有你 的主機(jī)名和IP地址的人口。如:128.127.50.12 mis_server

如果用TELNET是成功的,但仍然無(wú)法正確聯(lián)接,則沒(méi)有正確安裝InterBase。請(qǐng)尋求數(shù)據(jù)庫(kù)管理員的幫助。

② PING到服務(wù)器服務(wù)器上,測(cè)試InterBase服務(wù)器是否正常運(yùn)行并且為桌面應(yīng)用可見(jiàn)(如果PING是成功的,消息“servername isalive”被顯示)。PING成功但TELNET不成功,則inet daemon可能有問(wèn)題。如果PING到服務(wù)器上不成功,則有網(wǎng)絡(luò)路徑問(wèn)題,將問(wèn)題報(bào)給網(wǎng)絡(luò)管理員。

如果底層協(xié)議不正常,請(qǐng)?jiān)儐?wèn)數(shù)據(jù)庫(kù)管理員,否則繼續(xù)幫助⑹。

⑹ 確認(rèn)是否有InterBase服務(wù)器的訪問(wèn)權(quán),如果有請(qǐng)繼續(xù)步驟⑺。

⑺ 檢查BDE應(yīng)用程序的InterBase別名是否正確安裝。

如果能夠直接從工作站上聯(lián)接,但不能從BDE應(yīng)用程序中,那么很有可能你的

IDAPI32.CFG別名設(shè)置有問(wèn)題。運(yùn)行BDE配置工具檢查InterBase別名。

18.3 Delphi Client/Server編程

本節(jié)介紹如何運(yùn)用Delphi可視化開(kāi)發(fā)工具和ObjectPascal語(yǔ)言開(kāi)發(fā)Client\Server的數(shù)據(jù)庫(kù)應(yīng)用程序,采用的例子是CSDEMOS。這是Delphi2.0自帶的演示Client\Server開(kāi)發(fā)的例子,它安裝在C:\Program Files\Borland\Delphi 2.0\Demos\DB\CSDemos中(缺省安裝)。

本節(jié)將包含以下內(nèi)容:

● 使用TDatabase部件連接SQL服務(wù)器

● 用DataSet部件(又稱數(shù)據(jù)集部件),如TTable和TQuery,聯(lián)接TDatabase部件并訪問(wèn)數(shù)據(jù)庫(kù)以及各種表之間如何切換

● 使用數(shù)據(jù)庫(kù)連接

● 觸發(fā)器的使用方法

● TStoredProc部件的使用方法

● 客戶和服務(wù)器之間的事務(wù)控制

● TStoredProc部件的使用方法

18.3.1 使用TDatabase部件聯(lián)接SQL服務(wù)器

18.3.1.1 TDatabase部件概述

TDatabase部件處理應(yīng)用程序與單個(gè)數(shù)據(jù)庫(kù)的聯(lián)接。如果不需要控制數(shù)據(jù)庫(kù)聯(lián)接,可以不用創(chuàng)建TDatabase部件。當(dāng)應(yīng)用程序試圖打開(kāi)數(shù)據(jù)庫(kù)表(Table)時(shí),會(huì)自動(dòng)創(chuàng)建一個(gè)臨時(shí)的TDatabase部件。但如果你想控制數(shù)據(jù)庫(kù)的持續(xù)聯(lián)接、進(jìn)入數(shù)據(jù)庫(kù)服務(wù)器的注冊(cè)和數(shù)據(jù)庫(kù)別名的值或事務(wù)控制,那么你就必須為每個(gè)所需的聯(lián)接創(chuàng)建一個(gè)TDatabase部件。

1. 創(chuàng)建TDatabase部件

TDatabase 部件在Component Palette中的Data Access頁(yè)上,你能將其拖放在數(shù)據(jù)模塊(Data module)或窗體中。在設(shè)計(jì)時(shí)創(chuàng)建TDatabase 部件,用戶可以設(shè)置初始值和編寫(xiě)OnLogin事件處理過(guò)程(Event Handle)。OnLogin事件給用戶提供了第一次注冊(cè)數(shù)據(jù)庫(kù)服務(wù)器時(shí)定制服務(wù)器安全參數(shù),如口令,的能力。

2. TDatabase的關(guān)鍵屬性

⑴ DatabaseName屬性

DatabaseName是所要聯(lián)接的數(shù)據(jù)庫(kù)名,并且用于DataSet軟件,它將出現(xiàn)在DataSet部件的DatabaseName屬性的下拉式列表框中。設(shè)置DataBaseName屬性是定義數(shù)據(jù)庫(kù)應(yīng)用的特定別名。DataSet部件能引用該名字以取代直接使用BDE別名。當(dāng)TDatabase部件的Connected屬性為T(mén)rue時(shí)不能修改該屬性。

⑵ AliaName屬性

AliasName是BDE配置工具定義的BDE別名的名字。TDatabase 從中獲取其缺省的設(shè)置。如果設(shè)置DriveName屬性,則該屬性將被清除,如果當(dāng)Connected為T(mén)rue時(shí)強(qiáng)行設(shè)置DriveName屬性將引發(fā)異常。

⑶ DriveName屬性

DriveName是BDE驅(qū)動(dòng)程序,如STANDARD 、ORACLE、SYBASE、INFORMIX或INTERBASE的名字。如果設(shè)置AliasName,則該屬性值將被清除。

⑷ Params屬性

Params屬性包含了打開(kāi)SQL服務(wù)器上數(shù)據(jù)庫(kù)時(shí)所需的參數(shù)。在缺省情況下,這些參數(shù)由BDE配置工具設(shè)置;用戶也可以用數(shù)據(jù)庫(kù)參數(shù)編輯器(Database Parameters Editor)修改這些參數(shù)。對(duì)于數(shù)據(jù)庫(kù)服務(wù)器而言,Params將描述一系列的參數(shù),如服務(wù)器名、 數(shù)據(jù)庫(kù)名、用戶名和口令。

⑸ Connected屬性

Connected屬性指明是否建立數(shù)據(jù)庫(kù)的聯(lián)接,當(dāng)應(yīng)用程序打開(kāi)數(shù)據(jù)庫(kù)中的一個(gè)表時(shí)Connected將被置為T(mén)rue;反之,關(guān)閉數(shù)據(jù)庫(kù)表,Connected將被置為False,除非KeepConnection為T(mén)rue。而將Connected置為T(mén)rue則可不需打開(kāi)數(shù)據(jù)庫(kù)表即可建立數(shù)據(jù)庫(kù)聯(lián)接。TDatabase的KeepConnection屬性描述當(dāng)數(shù)據(jù)庫(kù)中沒(méi)有表打開(kāi)時(shí)是否維持?jǐn)?shù)據(jù)庫(kù)聯(lián)連。

⑹ KeepConnection屬性

KeepConnection屬性描述當(dāng)數(shù)據(jù)庫(kù)中沒(méi)有打開(kāi)表時(shí)是否要保持與服務(wù)器的聯(lián)連, 如果數(shù)據(jù)庫(kù)應(yīng)用需要打開(kāi)和關(guān)閉單個(gè)數(shù)據(jù)庫(kù)中的多個(gè)表時(shí),將KeepConnection 設(shè)置為T(mén)rue是很有用的,那樣,即使沒(méi)有打開(kāi)任何表,應(yīng)用仍能保持與數(shù)據(jù)庫(kù)的聯(lián)接,它能夠重復(fù)地打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)表,而不需要重復(fù)執(zhí)行聯(lián)接過(guò)程。如果KeepConnection置為False,當(dāng)每次將Connected置為T(mén)rue,數(shù)據(jù)庫(kù)都必須執(zhí)行注冊(cè)過(guò)程。

⑺ LoginPrompt屬性

LoginPrompt屬性用于控制如何處理SQL數(shù)據(jù)庫(kù)的安全性問(wèn)題。如置為T(mén)rue,當(dāng)應(yīng)用程序試圖建立數(shù)據(jù)庫(kù)聯(lián)接時(shí)屏幕上將出現(xiàn)標(biāo)準(zhǔn)Delphi注冊(cè)對(duì)話框。用戶必須輸入正確的用戶名和口令。如果置為False,則應(yīng)用程序?qū)ふ襎Database部件的Params 屬性中的注冊(cè)參數(shù)。下面是USERNAME和PASSWORD參數(shù)的例子:

USERNAME = SYSDBA

PASSWORD = masterkey

⑻ TransIsolation屬性

TransIsolation屬性描述SQL服務(wù)器所有的事務(wù)控制獨(dú)立級(jí)別。 tiDirtyRead使所有修改都被返回,而不管記錄是否已被提交。tiReadCommitted將只返回提交的記錄,而提交的修改將不會(huì)在結(jié)果中反映出來(lái)。tiRepeatableRead 將只返回事務(wù)過(guò)程中最初的記錄,即使另一個(gè)應(yīng)用程序?qū)⑺鞯男薷奶峤弧?/p>

各種數(shù)據(jù)庫(kù)服務(wù)器可能不同程度地支持這些獨(dú)立級(jí)別,或者根本不支持。 如果需要的獨(dú)立級(jí)別不被服務(wù)器支持,那么Dephi將使用下一個(gè)更高的獨(dú)立級(jí)別,如下表所示:

表18.10 各類服務(wù)器TransIsolation設(shè)置

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

獨(dú)立級(jí)別 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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

各個(gè)獨(dú)立級(jí)別的含義請(qǐng)見(jiàn)表18.12。

3. TDatabase的關(guān)鍵方法

⑴ StartTransaction方法

StartTransartion方法在由TaransIsolation屬性指定的獨(dú)立級(jí)別下開(kāi)始事務(wù)控制。如果在一個(gè)事務(wù)已被激活的情況下調(diào)用該方法,Delphi將引發(fā)異常。

調(diào)用了該方法后,對(duì)數(shù)據(jù)庫(kù)所做的修改一直由數(shù)據(jù)庫(kù)服務(wù)器維持到調(diào)用Commmit方法提交數(shù)據(jù)或調(diào)用Rollback方法取消修改為止。只有當(dāng)聯(lián)接數(shù)據(jù)庫(kù)服務(wù)器時(shí),才能調(diào)用該方法。

⑵ Rollback方法

Rollback方法返轉(zhuǎn)當(dāng)前事務(wù)控制,并且取消自最近一次調(diào)用StartTransaction以來(lái)對(duì)數(shù)據(jù)庫(kù)所做的所有修改。

⑶ Commit方法

Commit方法提交當(dāng)前事務(wù)控制,并且將自最近一次調(diào)用StartTransaction以來(lái)所有數(shù)據(jù)修改存入數(shù)據(jù)庫(kù)。

4. TDatabase的OnLogin事件的處理

OnLogin事件的觸發(fā)條件是當(dāng)聯(lián)接SQL數(shù)據(jù)庫(kù)的TDatabase部件被打開(kāi)并且LoginPrompt屬性為T(mén)rue。使用OnLogin事件處理過(guò)程可以在運(yùn)行時(shí)設(shè)置注冊(cè)參數(shù)。OnLogin 事件處理過(guò)程得到TDatabase的注冊(cè)參數(shù)數(shù)組Params,并且使用Values屬性改變這些參數(shù)。

例如:

LoginParams.Vaiues['SERVERNAME'] := 'MYSERVERNAME';

LoginParams.Values['USER NAME'] := 'MYUSERNAME';

LoginParams.Values[PASSWORD'] := 'MYAPSSWORD';

當(dāng)控制從OnLogin事件處理過(guò)程中返回時(shí),應(yīng)用程序用這些參數(shù)來(lái)建立聯(lián)接。

OnLogin事件處理過(guò)程的聲明是這樣的:

TLoginEvent = procedure(Database: TDatabase;LoginParam: TStrings) of Object;

property OnLogin: TLoginEvent;

TLoginEvent類型是處理OnLogin事件的方法頭。Database參數(shù)是要聯(lián)接的數(shù)據(jù)庫(kù)。LoginParams是TStrings類型的對(duì)象,包含用戶名和口令,以及打開(kāi)數(shù)據(jù)庫(kù)時(shí)所用的其它參數(shù)。用戶名是形如USER NAME = John.Doe的字符串,口令是形如PASSWORD = is_Password的字符串。當(dāng)OnLogin事件處理過(guò)程被調(diào)用時(shí)應(yīng)當(dāng)在LoginParams中加入用戶名和口令。

18.3.1.2 定制數(shù)據(jù)庫(kù)服務(wù)器的注冊(cè)參數(shù)

大多數(shù)數(shù)據(jù)庫(kù)服務(wù)器都包含限制數(shù)據(jù)庫(kù)訪問(wèn)的安全特征。通常,在用戶能訪問(wèn)數(shù)據(jù)庫(kù)之前,服務(wù)器都要求注冊(cè)的用戶名和口令。

如果服務(wù)器需要注冊(cè),在設(shè)計(jì)階段,Delphi 會(huì)在你試圖聯(lián)接時(shí)提示你,諸如在會(huì)TTable部件描述數(shù)據(jù)庫(kù)表名時(shí)。

在缺省情況下,Delphi應(yīng)用在打開(kāi)數(shù)據(jù)庫(kù)服務(wù)器的聯(lián)接時(shí),顯示標(biāo)準(zhǔn)注冊(cè)對(duì)話框。如果聯(lián)接已建立,則注冊(cè)對(duì)話框不會(huì)出現(xiàn)。

可以用下列方法處理服務(wù)器注冊(cè):

1. 將TDatabase部件的LoginPrompt屬性置為T(mén)rue。這樣,當(dāng)應(yīng)用程序試圖建立數(shù)據(jù)庫(kù)聯(lián)接時(shí),標(biāo)準(zhǔn)注冊(cè)對(duì)話框會(huì)打開(kāi)。

2. 將LoginPrompt屬性置為False,在TDatabase部件的Params屬性中包含用戶名和口令參數(shù)。例如:

USERNAME = SYSDBA

PASSWORD = mosterkey

但不推薦使用該方法,因?yàn)檫@會(huì)危害數(shù)據(jù)庫(kù)安全

3. 使用TDatabase部件的OnLogin事件設(shè)置注冊(cè)參數(shù)。OnLogin事件得到TDatabase 注冊(cè)參數(shù)數(shù)組的拷貝,并利用Values屬性改變這些參數(shù)。如:

LoginParams.Values['SERVER NAME']:= 'MYSERVERNAME';

LoginParams.Values['USER NAME'] :='MYUERNAME';

LoginParams.Values['PASSWORD'] := 'MYPASSWORD';

當(dāng)控制從數(shù)據(jù)庫(kù)注冊(cè)事件處理過(guò)程中返回時(shí),這些參數(shù)被用來(lái)建立聯(lián)接。

18.3.1.3 建立應(yīng)用程序特定的別名

TDatabase的Aliases描述了數(shù)據(jù)庫(kù)表的位置和數(shù)據(jù)庫(kù)服務(wù)器的聯(lián)接參數(shù)。通常都是在Delphi之外,運(yùn)用BDE配置工具(BDECFG32.EXE)創(chuàng)建別名,并且別名被存在BDE 配置文件IDAPI32.CFG中。

用戶也可以用TDatabase創(chuàng)建只在應(yīng)用程序中可用的別名,用TDatabase創(chuàng)建的別名不會(huì)加進(jìn)BDE配置文件中。任何DataSet部件可通過(guò)描述DatabaseName 屬性來(lái)使用這些別名。為了定制這些局部別名的參數(shù),用鼠標(biāo)左鍵雙擊TDatabase部件或從TDatabase部件中選擇Database Editor,Delphi就會(huì)打開(kāi)數(shù)據(jù)庫(kù)屬性編輯器(Database Properties Editor)。

這只是其中一部分

....更多的請(qǐng)點(diǎn)網(wǎng)址

分享文章:delphi三層服務(wù)器連接安全 delphi 三層
鏈接URL:http://jinyejixie.com/article48/doppjep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、App設(shè)計(jì)建站公司、App開(kāi)發(fā)響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
安康市| 富顺县| 威远县| 额济纳旗| 商丘市| 繁昌县| 无锡市| 柏乡县| 武汉市| 峨边| 彭州市| 额敏县| 莱阳市| 荣昌县| 屏边| 偏关县| 包头市| 高清| 竹北市| 桐梓县| 横峰县| 石首市| 榆树市| 景宁| 湖南省| 农安县| 当雄县| 永州市| 司法| 资源县| 东丽区| 巴林右旗| 兴文县| 永靖县| 扎鲁特旗| 吉水县| 尉犁县| 饶河县| 合水县| 康保县| 台北市|