4 MySQL应用
4.1 应用体系结构
C/S体系结构:客户机/服务器结构
服务器用于数据存储,客户机用于数据表示。
客户机:是指软件上可以理解为客户机上安装的特定专用软件
服务器:是指数据库服务器
C/S体系结构须在客户机上安装特定的专用软件才能访问服务器。
特点:系统开发针对性强,可以增加客户的许多个性化特征
优缺点:
(1)服务器处理任务相对较轻,数据处理由客户机和服务器共同负责
(2)安全性问题
(3)需要针对不同的系统开发不同版本,系统开发、维护、升级和培训的成本高
(4)客户机需要安装客户端才能使用
B/S结构:浏览器/服务器结构
浏览器只负责发送接收数据,几乎不进行数据处理,主要的任务在服务器端处理。
客户机不需要安装任何特定的软件,只需要有一个浏览器就可以与服务器进行交互。
浏览器主要用于发送接收数据,几乎不进行数据处理,主要任务在服务器处理。
第一层:客户端即浏览器层,html编写,通过互联网向Web服务器提出访问Web页面请求,并接受Web服务器返回的结果。
第二层:Web服务器,接收从浏览器发来的请求。
第三层:应用服务器,由中间件与应用程序组成。
第四层:数据库服务器
第五层:数据库
优缺点:
(1)数据处理主要由服务器端负责,服务器处理任务相对较重
(2)安全性问题
(3)系统开发、维护、升级和培训的成本低
(4)无需安装客户端,有Web浏览器即可
4.2 Python访问SQL
连接数据库、生成游标对象、执行SQL语句、关闭游标和连接
4.3 JDBC编程
JDBC是一种用于执行SQL语句的JAVA API
目标是使应用程序开发人员使用JDBC可以连接提供了JDBC驱动程序的任何数据库系统。
JAVA通过JDBC来访问数据库,这些包含JDBC连接访问数据库的语句的JAVA程序就是普通JAVA程序
用JAVA语言编译成字节码,就可以在JAVA虚拟机上运行
只需要导入相应的包,即import Java.sql.*
JDBC应用程序
(1)加载JDBC驱动程序
(2)建立与数据库的连接
(3)进行数据库访问
(4)关闭相关联接
JSP中,HTML和JAVA代码可以根据需要任意交替出现,只需要注意:
(1)每段代码用<%和%>括起来
(2)从HTML代码的角度,仅关注JAVA中的输出语句,只要求输出语句位置合适,能最终生成合适页面
(3)关于JAVA代码,去掉HTML代码和<%、%>符合JAVA语法
4.4 ODBC编程
与JDBC类似,C,C++也有连接访问数据库的标准API叫ODBC。
ODBC也能提高应用系统与数据库平台的独立性。
4.5 存储函数和过程
数据库采用存储技术。存储函数使数据库中定义一些SQL语句的集合,然后直接调用这些存储函数来执行已经定义好的SQL语句。
优点:
(1)由于存储函数不需要额外的语法分析,运行效率高
(2)客户端不需要的中间结果无需在服务器端和客户端来回传递,只需向服务器发出存储函数的名字,就可以调用存储函数
(3)便于实施业务规则
习题:
从HTML到SQL需要两个桥梁,HTML与高级语言之间的JDBC、ODBC、ADO等桥梁;高级语言与数据库之间的CGI、ASP、JSP等桥梁。(错) 解释 : 从HTML到高级语言:CGI、ASP、JSP;从高级语言到数据库之间:JDBC、ADO、ODBC
PG提供的SQL语言可以作为子语言嵌入在宿主语言中使用,这里所说的宿主语言就是指SQL语言。(错)宿主语言是高级语言
预处理程序ECPG对.c文件进行预处理,主要就是把其中的pgSQL语句转换成主语言能够识别的SQL函数调用的形式,结果是同名.pgc文件。(错) 解释:预处理程序ECPG对.pgc文件进行预处理,主要就是把其中的pgSQL语句转换成主语言能够识别的SQL函数调用的形式,结果是同名.c文件。
把pgSQL嵌入到宿主语言中使用还必须要解决以下四个方面的问题:连接数据库、嵌入识别问题、宿主语言与pgSQL语言的数据交互问题、宿主语言的单记录与pgSQL的多元组的协调问题。(对)
宿主语言连接数据库,通常需要给出数据库服务器地址、端口号、数据库名、用户名、口令等,必要时可能还需要安装和加载数据库驱动程序。(对)
为了区分宿主语言和pgSQL语句,为pgSQL语句加一个识别前缀标识“EXEC SQL” ,和结束标志:分号“;”。(对)
解释:嵌入式识别问题:使用前缀标识“EXEC SQL”,结束用分号表示
宿主语言和pgSQL语言的数据交换问题:EXEC SQL BEGIN DECLARE SECTION;
<共享变量声明>EXEC SQL END DECLARE SECTION;
解决宿主语言和pgSQL语言的数据交换问题的答案是,引入共享变量的概念。在pgSQL语句中使用共享变量时,变量名前需加一个引号。(错) 解释: 解决宿主语言和pgSQL语言的数据交换问题的答案是,引入共享变量的概念。在pgSQL语句中使用共享变量时,变量名前需加一个冒号
解决宿主语言一次只能处理一个记录,而pgSQL语言一次处理多个元组的矛盾,方法是使用共享变量。(错)
解释: 解决宿主语言一次只能处理一个记录,而pgSQL语言一次处理多个元组的矛盾,方法是使用游标。
当无法确定SELECT语句查询结果至多是一个元组时,需要用游标机制把多个元组一次一个地传送给宿主语言程序进行处理。另外,在游标处于活动状态时,也可以更新或删除游标指向的元组。(对)
SQLSTATE是一个特殊变量,用于连接pgSQL执行系统和宿主语言,它是一个五字符的数组,每次调用pgSQL的库函数,向SQLSTATE变量中存放一个代码,以反应调用中出现的问题,"00000"表示没有产生任何错误,"02000"表示没有找到结果元组。(对)
如果实际应用中有时SQL语句只能在实际运行时才能完全确定,这时就需要动态pgSQL语句。动态pgSQL语句需要先准备再执行。(对)
为了区分宿主语言和 pgSQL 语句,需要给 pgSQL 语句加一个识别前缀标识为 BEGIN。(错)解释:前缀标识“EXEC SQL” ,和结束标志:分号“;”
JDBC是一种用于执行SQL语句的Java API,它定义了用来访问PG数据库的标准Java类库,只能是PG的SQL语句,而不包括其它关系数据库系统。(错)其他数据库系统也可以连接。(各个数据库系统)
用 Class.forName (“org.postgresql.Driver”);加载JDBC驱动程序后就可以访问各种关系数据库系统,比如ORACLE等。(错)
解释:只能是PgSQL
JDBC还提供了查询结果集模式和数据库模式的机制。(对)
PG允许使用各种不同的程序设计语言来编写函数,特别是内建了PL/pgSQL。(对)
ODBC 定义了用来访问数据库的标准 Java 类库,使用这个类库可以以一种标准的方法、方便地访问各种关系数据库,包括 pgSQL。
(错)JDBC
( 浏览器 )通过互联网向 Web 服务器提出访问 Web 页面的请求,并接受从 Web 服务器返回的页面。
( )接收从浏览器发来的请求,然后根据情况有两种处理方式:①直接返回 HTML 格式Web 页面;②调用应用服务器中的应用程序,并接收从应用服务器返回的数据,整合成 HTML 格式页面发送给浏览器。答案: 【 Web 服务器】
把 pgSQL 嵌入到宿主语言中使用还必须要解决以下四个方面的问题是( )和嵌入识别、数据交互、单记录与多元组的协调。
答案:【连接数据库】
宿主语言连接数据库时,通常需要给出( )、端口号、数据库名、用户名、口令
答案:【数据库服务器地址】
为了区分宿主语言和 pgSQL 语句,需要给 pgSQL 语句加一个识别前缀标识为( )。
答案: 【 EXEC SQL】
( 共享变量 )可以解决宿主语言和 pgSQL 语言的数据交换问题。