【数据库系统及应用】数据库应用开发
第12章 数据库应用的结构与开发环境 n数据库应用开发概述 n开放的客户端开发 n数据库应用开发工具PowerBuilder n基于组件的数据库开发 nWeb数据库应用开发 1 数据库应用开发概述 客户端中间层/中间件数据库 2 开放的客户端开发 n开放式客户体系结构与ODBC nODBC的基本概念 nODBC的构成 nVisual FoxPro作为客户端开发工具 n使用远程视图操作SQL Server n使用ODBC函数操作SQL Server 3 开放式客户体系结构与ODBC 开放式客户体系结构使得客户端应用不再紧密地 依赖于数据库管理系统,用户有广泛的挑选余地来选 择自己喜欢和熟悉的开发工具。甚至开发的过程都可 以不依赖于数据库管理系统,可以在客户端独立地进 行开发,当真正联调时再连接到数据库服务器。这也 有利于团队的开发方式。 4 ODBC的基本概念 ODBC(Open DataBase Connectivity )的全称是开放数据库互连,它是一种访 问数据库的统一界面标准。 5 ODBC的两个部分 一部分是连接客户端的标准 客户端界面。从客户端的角度 ODBC遵守共同的标准,这使得 不同的开发工具连接和使用数据 库的方式是一样的,另一方面也 使得使用不同的数据库管理系统 的方式也是一样的; 另一部分是连接专门的数据 库管理系统的服务器端界面或驱 动程序。 6 ODBC的构成 v应用程序 v驱动程序管理器 v驱动程序 v数据源 7 ODBC函数完成哪些工作? n请求对数据源的连接,获取连接句柄; n指定事务控制方式; n定义接收结果的数据区; n向数据源发送SQL语句; n接收SQL的查询结果; n处理出错信息,并将出错信息返回给应用程 序; n终止对数据源的连接。 8 驱动程序管理器的工作 n安装指定的驱动程序; n定义数据源,并把数据源映射到具体的 ODBC驱动程序上 ; n为每个驱动程序提供ODBC函数的入口 点; n为ODBC调用提供参数验证等。 9 ODBC驱动程序的具体任务 n建立与数据源的连接; n向数据源提交SQL请求; n处理查询结果; n将数据源错误转换为标准错误代码,并返回 给应用程序; n提交事务的开始请求、完成请求和撤消请求 等。 10 什么是数据源? n 数据源就是通过一种ODBC连接的SQL数据库 或关系数据库,它可以是PC平台上的FoxPro数 据库、Windows NT平台上的SQL Server数据 库或OS/2平台的Oracle数据库等。 11 Visual FoxPro作为客户端开发工具 n使用远程视图操作SQL Server n使用ODBC函数操作SQL Server 12 使用远程视图操作SQL Server nVisual FoxPro的视图概念:本地视图和远程视图 n连接 n使用CREATE CONNECTION命令建立 n建立远程视图 nCREATE VIEW REMOTE 13 使用远程视图的例子 n建立连接 CREATE CONNECTION Myconn ; DATASOURCE "MQIS" USERID "sa" PASSWORD "" n建立远程视图 CREATE SQL VIEW rv_仓库 REMOTE CONNECTION myconn; AS SELECT * FROM 仓库 14 使用ODBC函数操作SQL Server 15 连接到SQL Server SQLCONNECT(DataSourceName, cUserID, cPassword | cConnectionName) 已经定义好的 数据源的名字 要注册到数据源 上的用户标识 与用户标识相 对应的口令 由CREATE CONNECTION建 立的一个命名连接的名称 16 例:连接到MQIS数据源,用户标识是sa,没有口令。 gnConnHandle = SQLCONNECT("MQIS", "sa","") IF gnConnHandle < 0 = MESSAGEBOX("不能建立到MQIS数据库的连接", 16, "SQL连接错误") CANCEL ELSE = MESSAGEBOX("成功地连接到MQIS数据库", 64, "SQL连接信息") ENDIF 17 断开或注销与数据库的连接 SQLDISCONNECT(nConnectionHandl e) 18 对SQL Server进行操作 向数据源提交或发送SQL语句的函数是: SQLEXEC(nConnectionHandle, cSQLCommand, CursorName) 由SQLCONNECT( ) 函数返回的连接句柄 要传送给数据 源的SQL语句 用来存放结果的 Visual FoxPro的 临时文件名 19 例 执行SQL命令 = SQLEXEC(gnConnHandle, "SELECT * FROM 仓库", "MyCursor") SQLEXEC( )函数除了可以自己向数据源传送SQL语句之外,还可以 执行由SQLPREPARE( )函数准备好的SQL语句。 20 动态SQL语句 nSQLPREPARE()函数 SQLPREPARE(nConnectionHandle, cSQLCommand, CursorName) n该函数的参数的含义与SQLEXEC函数的参数相同, 但该函数的功能是将SQL语句传送给数据源,它并不 执行此SQL语句,而是将它编译好准备由SQLEXEC函 数来执行。 21 例 执行动态SQL语句 gcCity = "北京" = SQLPREPARE(gnConnHandle, "SELECT * FROM 仓库; WHERE 城市 = ?gcCity") = SQLEXEC(gnConnHandle) . gcCity = "上海" = SQLEXEC(gnConnHandle) 22 Visual FoxPro中其他ODBC函数 nSQLCANCEL函数 n请求中断正在执行的SQL语句 nSQLCOMMIT函数 n事务的提交 nSQLROLLBACK函数 n事务的撤消 nSQLTABLES函数 n获得指定数据源(数据库)中表的信息 nSQLCOLUMNS函数 n获得指定数据源下某个表中列的信息 23 Visual FoxPro中其他ODBC函数 nSQLSETPROP函数 n设置指定数据源的环境参数值 nSQLGETPROP函数 n获取指定数据源的环境参数值 nSQLMORERESULTS函数 n当SQLEXEC函数返回多个查询结果集时, 利用该函数可以分别将结果送到不同的 Visual FoxPro临时文件 24 数据库应用开发工具PowerBuilder nPowerBuilder的数据库接口 nPowerBuilder应用的构成与开发方法 n对象、属性与事件 nPowerBuilder的开发环境 n数据库操作与事务对象 n初步体验PowerBuilder的开发方法 25 PowerBuilder的数据库接口 n通过ODBC连接数据库 n通过JDBC连接数据库 n通过OLE DB连接数据库 n通过专用接口连接数据库 26 通过ODBC连接数据库 27 通过JDBC连接数据库 28 通过OLE DB连接数据库 29 PowerBuilder应用的构成与开发方法 30 使用PowerBuilder进行开发的实质是 : n定义对象及其属性; n定义对象上某个事件发生时要执行的程序。 使用PowerBuilder 进行应用开发的流程 31 对象、属性与事件 n对象、属性和事件是面向对象开发方法的三 个要素 n对象是组成应用程序的部件 n属性决定了对象的特征 n事件决定了当发生什么动作时要执行的程序 32 PowerBuilder的主要对象 n窗口(Windows) n数据窗口(DataWindow) n命令按钮(CommandButton) n选择框(CheckBox) n单选按钮(RadioButton) n图形按钮(PictureButton) n下拉列表框( DropDownListBox) n列表框(ListBox) n图形(Graph) n图片(Picture) n单行编辑器(SingleLineEdit ) n多行编辑器(MultiLineEdit ) n静态文本(StaticText) n菜单(Menu) n等等。 33 例:命令按钮的常用属性 nDefault n在一组命令按钮中指定本按钮是否是默认选择的 ,取值为True或False; nEnabled n说明命令按钮当前是否起作用,取值为True或 False; nText n显示在命令按钮中的文字提示; nVisible n说明命令按钮当前是否可见,取值为True或 False; n 等等 34 常用事件 n单击命令按钮的Clicked事件 n双击图片的DoubleClicked n窗口打开时的Open事件 n数据窗口中记录行改变的RowFocusChanged事 件 n等等 35 PowerBuilder的开发环境 n工作空间和目标 nPowerBuilder的工作空间(8.0版以后才有)可以 看作是开发各种应用的“空间”或“容器”,可以根据 需要在一个工作空间中建立一个或多个目标(应 用),可以同时打开和编辑多个目标中的对象, 可以同时编译和部署多个目标。 nPowerBuilder目标可以是PowerScript目标(客户 端可执行程序或服务器端组件),也可以是Web 目标(Web应用)。 36 画板(Painter) n应用(Application)对象画板 n窗口(Window)画板 n菜单(Menu)画板 n数据窗口(DataWindow)画板 n数据库(Database)画板 n对象库管理(Library)画板 n用户对象(User Object)画板 n调试工具(Debug)画板 37 数据库操作与事务对象 n通过事务对象完成对数据库的操作 n什么是事务对象? nPowerBuilder的事务对象是PowerScript与数据库 的通讯区 n如果需要同时和多个数据库相连或进行多种 数据库操作,则需要多个事务对象变量 n默认的全局事务对象变量是SQLCA n事务对象类型是Transaction 38 事务对象 n每个事务对象有15个属性,其中10个用于给出连接数据库的信息,5个 用于返回操作数据库的结果代码(错误或成功)。对于不同的数据库及 数据库管理系统事务对象的属性取值是不一样的,下表给出了事务对象 的属性及其描述。 39 连接到数据库 n连接到数据库的语句是CONNECT,在使用该语句之前 ,相应的事务对象必须存在,并且所需的属性也已经赋 值。 nCONNECT语句的格式: nCONNECT USING ; n例 SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString=DSN=stock" CONNECT; 40 和事务对象有关的几条语句 n断开和数据库的连接 nDISCONNECT n事务提交 nCOMMIT n事务撤消 nROLLBACK 41 事务对象应用举例 /说明SQLServerTrans事务对象 transaction SQLServerTrans /置默认事务对象的属性值 SQLCA.DBMS = "ODBC" SQLCA.Dat