第22章 JDBC入门
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22.2.5
图形用户界面模块的实现
类com.javaeasy.bookframe.BookFrame是负责图形用户 界面的类。它首先会弹出如图22-5的对话框,让用户输入数 据源名字。
22.3
小结:强大的JDBC标准
在本章中,我们学习了如下内容。
• JDBC规范。 • JDBC中的常用类和接口。 • JDBC驱动是各个数据厂商为自己的数据库提供的,满足 JDBC标准的程序。这个程序可用来以JDBC规定的方式操作其数 据库。 理解JDBC规范、JDBC驱动和低层数据库之间的关系。明白 JDBC规范为什么能够在一定程度上屏蔽不同数据库的不同。 学会使用最简单的JDBC-ODBC桥驱动,来连接到一个 ODBC数据源。 学会使用DriverManager、Connection、Statement、 PreparedStatement和ResultSet等类和接口来编写简单的JDBC程 序,对数据库进行增删改查操作。 学习简单的使用JTable。
第22章
JDBC入门
数据库是用来处理数据的解决方案。当今的数据库已经是关 系型数据库的天下了,本章中所说的数据库都是指关系型数据库。 本章中将讲述JDBC的基础知识。JDBC可以看做是Java Database Connectivity的缩写。它是Sun公司的所开发的一套操作数据库的标 准API接口。通过JDBC技术,可以方便的来操作数据库。
22.1.5
PreparedStatement接口
PreparedStatement继承自Statement,所以Statement中有的方法 在PreparedStatement中都有。在Connection接口中, prepareStatement 方法用于生成PreparedStatement实例。而 prepareStatement方法必须有一个String类型的参数。这个参数就是一 个SQL语句。这个SQL语句中对于未确定的变量都是使用问号(?)代 替的。 PreparedStatement的独特之处就是,是在每次预先编译好这个 SQL语句,然后在运行之前,需要使用PreparedStatement中的setXXX 方法来设置SQL语句中每个不确定的变量(也就是“?”)。 PreparedStatement中有很多的setXXX方法。它们的作用和格式都是一 致的:第一个参数是代表现在要为第几个不确定变量(问号)设置值 (从1开始),第二个参数就是对应类型的变量。
使用Oracle数据库时:
应用程序
Oracle的JDBC驱动程序 加载Oracle 的JDBC驱动 Oracle的JDBC驱动中 实现了Connection接口的类
应用程序
使用
Connection类的引用
实现百度文库
JDBC规范
更换为IBM DB2数据库后:
实现
应用程序
IBM DB2的JDBC驱动程序 加载IBM DB2 的JDBC驱动 IBM DB2的JDBC驱动中 实现了Connection接口的类
JDBC-ODBC桥(JDBC-ODBC Bridge)是Sun为Java 准备的一个可以访问ODBC数据源的JDBC驱动。这个JDBC 驱动并不是驱动某个具体的数据库,而是将ODBC数据源看 做数据库,开发出的一个符合JDBC标准的驱动程序。也就 是说,在使用JDBC-ODBC桥驱动的时候,它会首先操作 ODBC数据源,而ODBC数据源则会继续操作底层数据库。
22.2.2
程序设计与模块划分
程序模块很简单,分为数据库操作模块和图形用户界 面模块。在本程序中,关联这两个模块的是 com.javaeasy.bookstorage.Book类。
用户图形界面模块 数据库操作模块 将Book对象属性写入数据 库
添加书籍
Book对象
编辑书籍属性
Book对象
根据odlBookName属性更新 某条数据库记录
22.1
JDBC的基本API
JDBC中定义了丰富的API,可以用于操作数据库的方方面 面。本节中将讲述JDBC中定义了哪些与数据库操作有关的基本 API。对于高级的API操作将不会涉及。通过本节的学习,我们 可掌握如何使用JDBC来完成增删改查的操作。
22.1.1
JDBC是什么
本小节中将对JDBC和JDBC驱动做一个简要的介绍。 1 JDBC规范 2 JDBC驱动
Oracle的JDBC驱动程序
IBM DB2的JDBC驱动程序
操作
Connection类的引用
操作
其它JDBC驱动数据库……
Oracle数据
IBM DB2数据库
22.1.2
DriverManager——驱动管理器
DriverManager管理着一个应用程序中所用到的所有JDBC驱动。对于 引用程序来说,需要使用如下的语句注册驱动程序。 Class.forName(驱动程序类的全路径名); 关于Class.forName的作用,我们可以认为是让Java平台加载一个类。 至于驱动程序类应该是哪个类,每种数据库的驱动程序都不一样。 getConnection(String url):通过数据库URL得到一个数据库连接。 getConnection(String url, String user, String password):通过数据库 URL得到一个数据库连接。连接的时候使用用户名和密码进行验证。 getConnection(String url, java.util.Properties props):通过数据库URL 得到一个数据库连接。连接的属性在props类中定义。Properties类可以看做 是一个Map,其中的元素就是键值对。这是最灵活的重载方式,可以包含0 到多个连接属性。
删除书籍
Book对象
根据bookName属性删除数 据库记录
列出所有书籍
Book对象列表
选出所有数据,每条数据 封装成一个Book对象,都 添加到List中
22.2.3
准备好数据源
在开始着手编写此程序之前,需要先准备好程序 需要使用的数据源。首先创建一个ODBC数据源,不妨 其名作“javadatasource”。最后测试是否创建成功,并 输出相应的结果,运行例程,控制台输出如下内容。 数据源测试成功。 这时候就表示数据源准备好了,下面开始编写程 序。
22.1.6
ResultSet接口
ResultSet接口代表结果集,是查询SQL语句执行的结 果,其中有如下几个常用的方法。 • next() • getXXX(int columnIndex)方法 • getRow() • getMetaData() • close()
22.1.7
JDBC-ODBC桥
22.1.4
Statement接口
Statement接口的作用就是执行SQL语句。SQL语句可以是查询 语句,也可以是更新语句(用于增加、删除或改数据库中的记录)。 Statement中的重要方法有下面几个。 executeQuery(String sql):执行一条查询SQL语句,返回值为 ResultSet。 executeUpdate(String sql):执行一条更新SQL语句,返回值为 int类型,代表此语句影响到的数据记录的条数。 addBatch( String sql ):增加一条SQL语句作为批处理语句。 executeBatch():执行所有的批处理语句,返回值是int数组,每 个元素代表一条批处理语句的执行结果。 close():关闭当前的Statement。 介绍完了Statement,再看一下Statement的子接口。
22.1.3
Connection接口
Connection代表一个与数据库的物理连接。其中重要的方法有下面 几个。 createStatement():返回一个Statement对象。 prepareStatement(String sql):返回一个PreparedStatement对象。 rollback():撤销本连接做出的所有改动。 commit():提交本连接做出的所有改动。 setAutoCommit(boolean autoCommit):设置是否每次改动都自动 提交。如果为true,则commit()方法和rollback()方法就没用了。 boolean getAutoCommit():查看本连接是否是自动提交的。 close():关闭一个连接,释放资源。在使用完毕一个连接后应该将 之关闭。 Connection作用主要是用来生成Statement和PreparedStatement, 并设置与数据库连接的相关属性。其中方法还有很多,在这里不再一一 列出。
22.2
一个操作数据库的简单程序
本节中将利用JDBC编写一个操作数据库的简单程序, 用来管理自己的书籍。界面还是使用Swing开发,数据操作 则需要使用上一节中学习的JDBC相关的知识。
22.2.1
程序的执行结果
在图形界面方面,要求有以下功能。 • 使用一个输入对话框让用户输入数据源名。 • 使用一个表格组件将这五个属性显示在窗口中。 • 用户可以在表格最后的一行空行中添加书籍。 • 可以在表格上使用键盘输入来编辑这五个属性。 • 可以通过单击表格下面的“删除”按钮删除所选中的书籍。 • 可以通过单击表格下面的“刷新”按钮来从数据库中从新读取最新 的书籍数据, 程序的运行界面如图22-3所示。
22.2.4
数据库操作模块的实现
数据库操作模块是由类com.javaeasy.bookstorage.BookManager扮演的。首先来看一 下这个类中所有的变量。 • Connection conn:数据库连接,在本程序中,在程序最后退出的时候才会释放。 • PreparedStatement insertState:用于插入数据的PreparedStatement对象。 • PreparedStatement deleteState:用于删除数据的PreparedStatement对象。 • PreparedStatement updateState:用于更新数据的PreparedStatement对象。 • PreparedStatement queryAllState:用于查询出所有记录的PreparedStatement对象。 • private static final String BOOK_TABLE_NAME:表名,默认值是“mybook”。 • private static final String CREATE_TABLE_SQL:用于创建表的SQL语句。 BookManager类的代码不再全部贴出,读者可以去随书光盘中阅读。代码并没有什 么难度,用到的也是最基本的SQL语句。