1 / 23

第 11 章 SQL 视图、 VFP8.0 的 CursorAdapter 和客户/服务器编程

第 11 章 SQL 视图、 VFP8.0 的 CursorAdapter 和客户/服务器编程. 11.1 客户 / 服务器结构 (Client/Server) 安装 ODBC 数据源: (1) 转到 Windows 控制面板 (Control Panel) ,并选 ODBC 图标。 (2) 在数据源 (Data Sources) 对话框选添加 (Add) 。 (3) 在添加数据源 (Add Data Source) 对话框选择 SQL Server ODBC 程序,并选确定 (OK) 。

anneke
Download Presentation

第 11 章 SQL 视图、 VFP8.0 的 CursorAdapter 和客户/服务器编程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第11章SQL视图、VFP8.0的CursorAdapter和客户/服务器编程第11章SQL视图、VFP8.0的CursorAdapter和客户/服务器编程 11.1 客户/服务器结构(Client/Server) 安装ODBC数据源: (1)转到Windows控制面板(Control Panel),并选ODBC图标。 (2)在数据源(Data Sources)对话框选添加(Add)。 (3)在添加数据源(Add Data Source)对话框选择SQL Server ODBC程序,并选确定(OK)。 (4)在ODBC SQL Server安装对话框,键入数据源名称(Data Source Name,例如:SQL2000)、说明(Description,例如:SQL server Version 2000)和其它合适的信息,然后选确定。 (5)在数据源对话框选关闭(Close)。

  2. 11.2 创建和使用视图(SQL View) 一、本地视图和远程视图 远程视图:使用远程SQL句法从远程ODBC数据源选择信息。 本地视图:使用VFP SQL句法从表或视图选择信息。

  3. 数据库中使用的视图设计器与查询设计器基本类似,不同点:视图不象查询,它是可修改的,在SQL View中修改数据后,VFP会自动修改与视图有关的基表(即视图建立在之上的表)中的数据;视图只能作为数据库的一部分保存下来而不是作为一个单独的文件(选择文件+保存菜单项去存贮视图,视图名不能含路径),而查询可以作为单独的QPR文件存贮;视图可以包含远程服务器中的表,用户在自己的计算机上所作的修改可以送回到服务器。

  4. 二、创建本地视图(Local View) 为创建本地视图,可在菜单“文件”(File)→“打开”(open),打开一个项目后在项目管理器(Project Manager)选择一个数据库(Database),然后选本地视图(Local View),再选“新建”(New)去打开视图设计器(View Designer);或者使用CREATE SQL VIEW命令带AS子句。

  5. 例11.2:建立一个包括Products表中全部字段的视图:例11.2:建立一个包括Products表中全部字段的视图: CREATE SQL VIEW Product_View As; SELECT * FROM testdata!products

  6. 三、创建多表视图 用户若想访问存贮在两个或更多的表中的相关信息时,可创建多表视图。在用视图设计器创建一个视图时,添加多个表,或者用CREATE SQL VIEW命令能建立多表视图。通过修改已存在的视图或通过创建新视图,创建多表视图。

  7. 1.修改一个视图 例11.3:用程序码在视图设计器中显示Product_view视图: OPEN DATABASE testdata MODIFY VIEW Product_view

  8. 2.用语言创建一个多表视图 (1)在WHERE子句中使用联接条件 例11.4:如果想知道订单的信息,包括接收订单雇员和发出订单顾客的信息,可建立一个使用Customer、Orders和Employee表的视图,用WHERE子句指出连接条件(即视图中只包含满足此条件的记录)。 OPEN DATABASE testdata CREATE SQL VIEW cust_order_emp_wiew AS; SELECT *; FROM testdata!customer,testdata!orders,testdata!empoyee; WHERE customer.cust_id=orders.cust_id; .AND. employee.emp_id=orders.emp_id

  9. (2)用FROM子句指定视图的联接条件 例11.5: OPEN DATABASE testdata CREATE SQL VIEW cust_ orders_ view AS; SELECT * FROM testdata! customer; INNER JOIN testdata! orders; ON customer.cust_id=orders.cust_id 例11.6: OPEN DATABASE testdata CREATE SQL VIEW cust_orders_view AS; SELECT * FROM testdata! customer; LEFT OUTER JOIN TESTDATA! Orders; ON customer.cust_id=order.cust_id

  10. 11.2.3 定义一个连接(Connection) 1.定义一个连接(Connection) 可采用如下方法之一: (1)在项目管理器数据库(Database)列表中,选择连接(Connection),然后选“新建”(New)去打开连接设计器(Connection Designer)。 (2)或,打开一个数据库,并使用CREATE CONNECTION命令去打开连接设计器。 (3)或,使用带有一个连接名字的CREAT CONNECTION命令去打开连接设计器。

  11. 2.显示存在的连接 用户可在项目管理器选择一个数据库(database),然后选择连接(Connections)。或者使用DISPLAY CONNECTIONS命令确定存在的连接。 例11.8:显示 testdata数据库的连接。 OPEN DATABASE testdata DISPLAY CONNECTIONS

  12. 11.2.4 创建远程视图(Remote View) 在项目管理器,选择一个数据库(Database),再选择“远程视图”(Remote View),然后选“新建”(New)去打开视图设计器。或,使用带有REMOTE 和(或)CONNECTION子句的CREATE SQL VIEW命令去建立一个远程视图。 如果在CREATE SQL VIEW命令中使用CONNECTION子句,不必再包括REMOTE关键字,VFP也会指定视图为远程的。 例11.9:从远程服务器上Testdata数据库的products表建立一个远程视图。 OPEN DATABASE testdata CREATE SQL VIEW product_remote_view CONNECTOIN remote_01; AS SELECT * FROM products

  13. 11.2.5 更名或删除视图 11.2.6 使用视图 1.在多工作区打开一个视图 2.显示视图结构 3.设置视图和连接(Connection)属性

  14. 1.3 更新视图的数据 视图属性 缺省设置 Table 具有可更新字段和具有至少一个主关键字段的全部表 KeyField 数据库关键字段和表的远程主关键字 UpdateName 所有字段形式为表名.列名 Updatable 除了主关键字段的全部字段 SendUpdates 它原始设为假(.F.),只在工作期内有效。如果改变它为真(.T.),则成为该工作期中所建立的全部视图的默认值

  15. 11.4 集成视图(Combining View) 1.集成本地和远程数据在视图中 用户通过创建基于本地视图和远程视图的新本地视图,可以集成本地和远程数据。要创建一个集成本地和远程数据的视图,可以: (1)在项目管理器选择一个数据库(database),再选本地视图(Local views)和选“新建”(New)去打开视图设计器。在视图中添加表、本地视图和远程视图。 (2)或使用CREATE SQL VIEW命令。

  16. 2.在一个视图中更新本地和远程数据 当用户在一个多级视图中更新数据时,更新“走”到下一级(顶级视图所基于的视图)。如果想更新多级视图的基表,必须为结构中的各视图发出TABLEUPDATE命令。 为多级视图更新基表最容易的方法是从顶级向下关闭(close)视图结构,因为当关闭一个视图时,VFP自动发出一个TABLEUPDATE命令。

  17. 11.5 使用视图和 SQL传递进行C/S模式编程 11.5.1 使用视图(SQLViews) 进行C/S模式编程 可以使用视图作为开发一个强有力的客户/服务器应用程序的核心方法。远程视图是一个功能强大的技术,它设计来使你能够从远程服务器选择恰好需要的数据下载到本地VFP临时表(cursor)中,然后可以使用它去查看和更新远程数据。一个视图是来自SQL SELECT语句的一个基本结果集。可使用参数化的SELECT语句下载特定的小数据集合(参数化查询详见VFP的帮助)。

  18. 11.5.2 升迁及升迁向导(Upsizing Wizard) VFP提供两个升迁向导:“Oracle升迁向导”和“SQL Server升迁向导”。这两个向导可创建一个Oracle数据库或SQL Server数据库,实现VFP数据库中各表的功能。还可以重定向VFP视图,使其使用新建的远程数据而不是本地数据。以及实现将本地应用程序移植为客户/服务器应用程序等升迁。

  19. 11.5.3 使用SQL传递(SQL Pass-through) 进行C/S模式编程 SQL传递(SPT)技术用 VFP的 SQL传递函数去直接访问远程服务器。这些函数允许超过视图的功能进行附加的服务器访问和控制。例如,使用SQL传递可以完成远程服务器上的数据定义,设置服务器属性和访问服务器存贮过程(Procedures)等。 SQL传递是建立只读结果集和使用任何其它当地SQL语法最好的工具。与视图(它只是来自SQL SELECT语句的一个结果集)不同,SQL传递可使用 SQLEXEC()函数去发送任何希望的东西到服务器。

  20. 11.6 VFP8.0的CursorAdapter与C/S模式编程 11.6.1 VFP8.0的CursorAdapter概述 11.6.2 CursorAdapter 的属性、事件和方法及工作 本节先介绍CursorAdapter 工作的例子,从而引导读者了解CursorAdapter 的PEMS,即它的属性(Properties),事件(Events)和方法(Methods)。 下面的例子可得到来自后端SQL Server的Northwind 数据库Customers表中Brazilian客户的一定的字段。其Cursor是可更新的,所以如果在Cursor做任何改变后关闭它,再重新运行此程序,便可以看到此变化已存贮到后端数据库中。

  21. 11.6.3 使用naive的CursorAdapter 11.6.4 使用ODBC的CursorAdapter ODBC实际上是DataSourceType 4个设置中最直接的。可以设置DataSource为一个打开的ODBC连接柄(handle),设置有用的属性和调用CursorFill去取回数据。如果“填充”好KeyFieldList、Table、UpdatableFieldList和UpdateNameList的内容,VFP将自动产生合适的UPDATE、INSERT和DELETE语句,并用其带来的任何变化去更新数据库。如果想使用一个存贮过程(stored procedure)代替之,则应合适地设置*Cmd、*CmdDatasource和*CmdDatasourceType属性。

  22. 11.6.5 使用ADO的CursorAdapter 11.6.6 使用XML的CursorAdapter 例11.25: Local lows as dataserver web service Lows =NEWOBJECT(〝Wsclient〞,HOME()+〝ffc\_webservices.vcx〞) Lows.cWSName =〝dataserver web service Lows=lows.setupClient(http://localhost/sQDataServer/dataServer.WSDL″,; 〝dataserver〞, 〝dataserverSoapPort〞) lcXML=lows.GetCustomers() return lcXML

  23. 例11.26: Local loXML as MSXML2.XMLHTTP LoXML =createobject(′MSXML2.XMLHTTP′) LoXML.open(′POST′,′http://localhost/northwind/template/′+; ′getallcustomers.xnl′,.F.) loXML.setRequestHeader(′Content-type′,′text/xml′) loXML.send() return loXML.responseText

More Related