5.1 使用程序设计语言访问数据库
5.1 使用程序设计语言访问数据库
为什么数据库程序员必须能够使用通用程序设计语言
SQL
提供了一种强大的声明性查询语言。实现相同的查询,用SQL
写查询语句比用通用程序设计语言要简单得多。然而,数据库程序员必须能够使用通用程序设计语言,原因至少有以下两点:
- 因为
SQL
没有提供通用程序设计语言那样的表达能力,所以SQL
并不能表达所有查询要求。也就是说,有可能存在这样的查询,可以用C、Java
或Cobol
编写,而用SQL
做不到。要写这样的查询,我们可以将SQL
嵌入到一种更强大的语言中。 - 非声明性的动作(例如打印一份报告、和用户交互,或者把一次查询的结果送到一个图形用户界面中)都不能用
SQL
实现。一个应用程序通常包括很多部分,查询或更新数据只是其中之一,而其他部分则用通用程序设计语言实现。对于集成应用来说,必须用某种方法把SQL
与通用编程语言结合起来。
通用编程语言中访问SQL
的方法
可以通过以下两种方法从通用编程语言中访问SQL
:
- 动态
SQL
:通用程序设计语言可以通过函数(对于过程式语言)或者方法(对于面向对象的语言)来连接数据库服务器并与之交互。利用动态SQL
可以在运行时以字符串形式构建SQL
查询,提交查询,然后把结果存入程序变量中,每次一个元组。动态SQL
的SQL
组件允许程序在运行时构建和提交SQL
查询。- 在这一章中,我们将介绍两种用于连接到
SQL
数据库并执行查询和更新的标准。一种是Java
语言的应用程序接口JDBC
(5.1.1节)。另一种是ODBC
(5.1.2节),ODBC
最初是为C语言开发的,后来扩展到其他语言如C++、C#和Visual basic
。
- 在这一章中,我们将介绍两种用于连接到
- 嵌入式
SQL
:与动态SQL
类似,嵌人式SL
提供了另外一种使程序与数据库服务器交互的手段。然而,嵌入式S0L
语句必须在编译时全部确定,并交给预处理器。预处理程序提交SQL
语句到数据库系统进行预编译和优化,然后它把应用程序中的SQL
语句替换成相应的代码和函数,最后调用程序语言的编译器进行编译。5.1.3节涵盖嵌入式SQL
的内容。
把SQL
与通用程序语言相结合的问题
把SQL
与通用程序语言相结合的主要挑战是:
这些语言处理数据的方式互不兼容。
- 在
SOL
中,数据的主要类型是关系。SQL
语句在关系上进行操作,并返回关系作为结果。 - 程序设计语言通常一次操作一个变量,这些变量大致相当于关系中一个元组的一个属性的值。
- 因此,为了在同一应用中整合这两类语言,必须提供一种转换机制,使得程序语言可以处理查询的返回结果
可先学习数据库设计 在看本章
注意关于章节的先后顺序:
数据库设计(第7章和第8章)可以脱离本章独立学习。
完全可以先学习数据库设计,再读本章内容。然而,对于强调编程能力的课程而言,在学习了5.1节之后可以做更多的实验练习,所以我们建议在学习数据库设计之前先掌握这部分的内容。