170 likes | 334 Views
Приложение или браузър. ADO. ODBC. OLE DB. Хранилище за данни. От mainframe. Рела-ционни. Нерела-ционни. БД и някои Интернет технологии. ODBC ADO. TDC Remote Data Services ( RDS ) – ActiveX контрол ( IE5). Браузър. RDS. client. server. IIS/NT Server. ADO. ODBC. OLE DB.
E N D
Приложение или браузър ADO ODBC OLE DB Хранилище за данни От mainframe Рела-ционни Нерела-ционни БД и някои Интернет технологии • ODBC • ADO • TDC • Remote Data Services ( RDS ) – ActiveX контрол ( IE5)
Браузър RDS client server IIS/NT Server ADO ODBC OLE DB релационни БД в mainframe нерелационни БД и някои Интернет технологии • адресиране на страница в Internet • потребителска заявка HTTP request (browser) to Web server. • HTML страница, заедно с RDS data control включените script (ASP) са вече • изпълнени. • потреб. попълва параметри за database search. RDS data control взаимодейства • със сървъра за обработка на заявката. RDS използва standard network protocols • (HTTP, DCOM в комуникацията). • компоненти в сървъра я обработват и създават ADO recordset. Recordset се • марщализира към кл. • в кл. , recordset попада в cursor engine component (част от RDS) и оттам в • HTML page. Може и recordset директно да се привърже с DHTML или други • контроли и обработи от script на страницата. • промени в recordset към data source в server чрез RDS data control.
БД и някои Интернет технологии Client/server communication through RDS RDS DataControl Object not a visible control. Used for querying a database
БД и някои Интернет технологии Пример: DataControl.FilterColumn = "City" DataControl.FilterCriterion = "=" DataControl.FilterValue = "Seattle"
БД и някои Интернет технологии Пример за сървър настройка 'Connect to internal server through DCOM. DataControl.Server = "MyWebServer" 'Connect to internal server through HTTP. DataControl.Server = "http://MyWebServer" 'Connect over the Internet through HTTP. DataControl.Server = "http://www.microsoft.com"
БД и някои Интернет технологии CreateRecordset method 'Създава структурите като dynamic Variant масиви. Dim aColumns(), c0(), c1(), c2() 'Създава всяка колона поотделно (Array функция) с указани ' име на колона, тип, размер и дали приема null стойност c0 = Array("CustomerID", CInt(adInteger), -1, False) c1 = Array("CustomerName", CInt(adVarChar), 64, False) c2 = Array("BalDue", CInt(adCurrency), -1, False) 'Създава масива aColumns. aColumns = Array(c0, c1, c2) Set Recordset = DataControl.CreateRecordset(aColumns)
БД и някои Интернет технологии RDS DataSpace Object • DataControl object облекчава комуникацията Internet. • DataSpace object създава функционалност за работа с бизнес обекти. • InternetTimeout Property • InternetTimeout == InternetTimeout property on the DataControl • CreateObject Method • С CreateObject method се инстанциира businessобектът върху IIS server. Параметри: • bstrProgID - ProgID на business обекта. • bstrConnection Къде да го създаде с какъв протокол да е връзката. 'Instantiate the object through HTTP. 'Специфицира IIS server в LAN или в Internet. Set MyObject = DataSpace.CreateObject("MyServer.MyClass", _ "http://www.microsoft.com")
БД и някои Интернет технологии RDSServer DataFactory Object DataFactory е RDS component работещв IIS server. DataControl object прави връзка, подава заявка към DataFactory. Когато създавате DataControl object Със заявка,RDS инстанциира скрит DataFactory object в server и му подава заявката.
БД и някои Интернет технологии RDS Handlers Средство за сигурност RDSприложения RDS поддържа handler в .ini файл (MSDFMap.ini), позволяащ управление надостъпа, заявките ипараметрите ( MSDFMap.ini): [connect default] ;ограничава достъпа за връзки без entry в handler. Access=NoAccess [connect CustomerDatabase] ;Всеки опит за четене/запис е с добавени параметри: Access=ReadWrite Connect="Provider=SQLOLEDB;Data Source=ScepHome; Œ Initial Catalog=Northwind;User ID=RDSUser;Password=RDSPassword;" [sql GetAllCustomers] ;Разрешен е достъп до customer таблица със заявка: sql="SELECT * FROM Customers" [sql GetACustomer] ;Разрешен достъп до customer table с подаден параметър: sql="SELECT * FROM Customers WHERE CustomerID = ?" [userlist CustomerDatabase] Administrator = ReadWrite Guest = ….
БД и някои Интернет технологии Само заявки за handler (CustomerDatabase, GetAllCustomers…) са допустими. Например: With DataControl .Server = "http://MyServer" .Handler = "MSDFMap.Handler" .Connect = "CustomerDatabase" .SQL = "GetACustomer('ALFKI')" .Refresh End With Или <OBJECT CLASSID = .. ;RDS control PARAM NAME = “Handler” VALUE = “MSDFMap.ini, име_наш_handler” … Ако искате RDS кодът да не допуска други заявки към БД, добавете към MicrosoftWindows Registry в IIS server: HandlerRequired=1 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfо Това ставa автоматично при инсталиране на Windows 2000. Може да се промени с HandlerRequired=0 .
<HTML> <!—създава инстанция на RDS.DataControl --!> <OBJECT CLASSID="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33" ID = myDC WIDTH = 0 HEIGHT = 0> </OBJECT> <SCRIPT LANGUAGE=VBScript> Const adcReadyStateLoaded = 2 Const adcReadyStateInteractive = 3 Const adcReadyStateComplete = 4 Dim state Public Sub window_OnLoad() StatusText.Value = "Click Find." state = 0 End Sub БД и някои Интернет технологии DataControl обектътможе да се използва в HTML страница така: <OBJECT CLASSID="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33" ID="DataControl" <PARAM NAME="Connect" VALUE="Provider=SQLOLEDB;Database=pubs;"> <PARAM NAME="Server" VALUE="http://Myserver"> <PARAM NAME="SQL" VALUE="Select * from authors"> </OBJECT> Пример (VBScript, изисква валиден IP адрес за връзка, подходящ сървър и download на “Dynamic HTML DataBinding”компонент към IE5. Използва се Access БД – books.mdb): <HTML> <!—създава инстанция на RDS.DataControl --!> <OBJECT CLASSID="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33" ID = myDC WIDTH = 0 HEIGHT = 0> </OBJECT> <SCRIPT LANGUAGE=VBScript> Const adcReadyStateLoaded = 2 Const adcReadyStateInteractive = 3 Const adcReadyStateComplete = 4 Dim state Public Sub window_OnLoad() StatusText.Value = "Click Find." state = 0 End Sub </BODY></HTML>
БД и някои Интернет технологии Public Sub myDC_OnReadyStateChange() If state = 1 Then Select Case myDC.ReadyState ' Току що започнал download - липсват готови данни. Case adcReadyStateLoaded StatusText.Value = "Downloading..." ' Частично снети данни, има още за снемане. Case adcReadyStateInteractive StatusText.Value = "Still downloading..." ' Изцяло снети данни, няма повече. Case adcReadyStateComplete ' Попълнете полетата за промяна. Проверете валидността на полето за ISBN FoundISBN.Value = myDC.Recordset( "ISBN" ) 'Заглавито, което ще се модифицира FoundTitle.Value = myDC.Recordset( "Title" ) ' OK с update. Всичко е наред. StatusText.Value = "Приключва процеса downloading." state = 2 End Select
БД и някои Интернет технологии ElseIf state = 2 then Select Case myDC.ReadyState ' започва процеса на uploading, не са изпратени още данни. Case adcReadyStateLoaded StatusText.Value = "Изпращане..." ' Частично изпратени данни. Case adcReadyStateInteractive StatusText.value = "Все още се изпращат..." ' Изцяло download данни, повече не се очакват. ' Goto readystate = complete if it works Case adcReadyStateComplete StatusText.value = "Край на процеса - updatе." state = 0 End Select End If End Sub Public Sub Find_OnClick() ' Валидизиране на input values. If Server.Value = "" Then Call Msgbox( "Моля укажете web server. " "Suggest: http://xxx.xxx.xxx.xxx" ) ElseIf ISBN.value = "" Then Call MsgBox( "Моля укажете ISBN . " "Suggest: 0-13-226119-7" ) Else
БД и някои Интернет технологии myDC.Server = Server.Value myDC.SQL = "SELECT ISBN, " "Title FROM Titles WHERE ISBN = '" & ISBN.Value & "'" myDC.Connect = "DSN=Books;" Call myDC.Refresh() state = 1 End If End Sub Public Sub Update_OnClick() ' можем да променим запис в БД If state = 2 Then myDC.Recordset( "Title" ) = FoundTitle.Value ' Съхрани промените Call myDC.SubmitChanges() Call myDC.Refresh() End If End Sub </SCRIPT><HEAD> <META NAME=VI60_defaultClientScript CONTENT=VBScript> </HEAD> <BODY> RDS Пример--променя заглавия в отдалечена БД<BR> Запис за откриване<BR>
БД и някои Интернет технологии <TABLE BORDER="0" CELLPADDING="0"> <TR> <TD>Server:</TD> <TD><INPUT ID=server NAME=server VALUE="http://xxx.xxx.xxx.xxx" TYPE="text" SIZE=60></TD> </TR> <TR> <TD>ISBN:</TD> <TD><INPUT ID=ISBN NAME=ISBN VALUE="0-13-226119-7" TYPE="text"></TD> </TR></TABLE> <INPUT TYPE="button" ID="Find" NAME="Find" VALUE="Find"><BR> <BR> Резултати<BR> <TABLE BORDER = "0" CELLPADDING = "0"> <TR> <TD>Открит ISBN( readonly ):</TD> <TD><INPUT ID=FoundISBN READONLY NAME=FoundISBN TYPE="text"></TD> </TR> <TR> <TD>Открито заглавие:</TD> <TD><INPUT ID=FoundTitle NAME=FoundTitle TYPE="text" ></TD> </TR></TABLE> <INPUT TYPE="button" ID="Update" NAME="Update" VALUE="Промени заглавието"><BR><BR> Статус:<INPUT TYPE="text" ID="StatusText" NAME="StatusText" SIZE=30 READONLY VALUE="Click Find."><BR> </BODY> </HTML>