

全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库访问几乎所有的应用都要进行数据的存储和保存。尽管一些信息可以储存在特性文件和系统环境中,使用数据库对于开发和增加应用的适用范围都是一种简便的方法。即使应用最初的设计目的不是为了存储和对数据进行规类处理,但是这是访问和获取数据的最简便方法之一。 在很多系统和应用中,数据库都是生命的核心,并且作为软件开发人员,必须懂得操作和维护数据库。数据管理是一项非常非常重要的工作,在很多大型集团内部,专门成立了维护数据库的队伍,并且通常拥有一定数量的数据库系统。在本章中,我们将讨论如何使用JDBC(Java Database Connectivity)将数据库进行连接。在本章的例子中,我们所使用的是MySql数据库,并且要尽可能的让代码简单(在第13和第14章中,我们将描述如何使用负责的管理设计)。本章主要内容:u 理解数据库的连接u 使用Java数据库连接u 基本的连接池u 通过简单的例子显示基本的数据库交互1 数据库连接性和JDBC在我们深入了解JDBC前,让我们了解一下大概情况。当数据库开始运行时,它通常通过诊听网络端口对网络提供服务,通常使用TCP/IP协议(Transmission Control Protocol/Internet Protocol)。该过程类似WEB服务器,当WEB服务器运行后,诊听80号端口,并且对请求进行响应。然而,与WEB服务器不同的是,数据库都使用不同的语言。即使是综合应用,也需要翻译器与数据库进行连接。翻译器就是数据库的驱动。 翻译层可以是一个接口调用,用于翻译为程序,或者为ODBC(开放式数据库互联),或者为JDBC驱动。编译一个调用接口到程序式一个非常陈旧的方法;但是这种方法非常实用,因为它无需提前知道接口和加载驱动的额外时间。 ODBC可使用的第一个驱动是可加载的驱动。ODBC驱动使用C语言或者C+语言编写,对于每个操作系统,都要开发单独的驱动。通过编写C/C+代码来驱动大量定制的对象或者处理大量的数据不是轻松的任务。因此,新的ODBC驱动只有在开发者认为成熟的时候才能发布,如果放驱动无法支持用户所用的操作系统,用户所能做的就是通过电话进行投诉。对每个java用户来说,编写驱动是头等的大事。 JDBC吸取了java虚拟计算机的优势和java编写后可以在任何环境下运行的能力。在早期,存在很多杂乱的JDBC驱动,很多驱动都是ODBC/JDBC驱动的混合体。今天,每个的数据库都能提供纯正的java数据库驱动。与使用JDBC相关的JDBC类和对象可以在java.sql和javax.sql程序包中得到。2 如何开始JDBC用户必须在java运行环境中准确地加载JDBC驱动到DriverManager中,用户可以通过在java.sql.Driver.Manager对象上调用registerDrive方法来完成这项工作,如:DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver();或者用户可以使用更为普通的动态类加载方法java.lang.Class.forName(),如:Class.forName(org.gjt.mm.mysql.Driver)在这两个方法中,圆括号中的名称为驱动的打包类名称。第二个例子是在本章中例子的代码,用户可以在选购光碟的mm.mysql-2.0.4-bin.jar中找到实际文件。Class.forName强迫类动态的加载到java运行环境中;registerDriver强迫java.sql.Driver.Manager准确的加载指定的类。Class.forName的成功意味着java运行环境可以找到指定的类;registerDriver的成功意味着运行时存在java.sql.*类。在任何一种情况下,有缺陷的或驱动在试图连接的时候都会出现异常,或者会导致产生错误。在任何速率下,registerDriver执行更多的,更严格的检测,并且发现异常。用户在java.sql.DriverManager对象通过调用getConnection方法创建一个连接。在建立连接时,存在几种超负荷的功能调用签名。每种方法都使用基于URL的连接字符串、URL字符串、道具对象和两个用于用户名称和密码的额外字符串。让我们看一个连接字符串的例子,观察该字符串是如何组成的: cn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/mjsp:mjsp:mjsp); 这个字符串包括连接方法(jdbc/jdbc:odbc),数据库驱动类型、带有数据库的机器名称,后面跟随着用冒号分开的用于诊听的数据库端口号码,默认的启动数据库,还有用冒号分开的用户名称和密码。为了防止混乱,在本章例子中使用的代码大都将元素直接分开。清单7.1, JdbcSetupTest JSP,测试MySql数据库的无格式设置和将要放置在classpath中的JDBC驱动。图7.1显示了一个成功测试的结果。清单7.1 JdbcSetupTest.jsp为了帮助用户解决在安装JDBC时的错误,JDBC设置测试页面在出现异常时会参考一个错误页面。该错误页面由清单7.2创建,提供一些解决故障的信息,并且显示如图7.2。 清单7.2 JdbcConnectError.jsp3 使用JDBC:一个简单的生产、帐目和订单应用 在本章中的所有例子页面都需要用户在MySQL中创建一个数据库和四个SQL表。MySQL设置的详细描述在附录A中。用户运行本章中这些例子所需要的SQL脚本如清单7.3。清单7.3 DatabaseAndTables.sql在没有太多成就前,用户可以使用其他的数据库创建这些表格。我们将这些章节中的例子尽量保持非常简单,这样可以避免设置上的一些不必要的争论。PostgreSQL是另一种开方源的数据库,可以用于本章的所有例子。高级的通常也是非常昂贵的数据库系统提供用户存储的能力,可以极大地提高应用地性能,创建出目标导向地应用。提示:不要忽视数据库设计和实践。如果用户对未来的学习感兴趣。我们推荐Joe Celkos SQL for Smarties (Morgan Kaufmann, 1999) 和 C. J. Dates An Introduction to Database Systems (Addison-Wesley 1999),可以对数据库设计的理论基础有较详细的论述。一旦用户建立了JDBC连接,用户必须使用语句(java.sql.Statement)来协商与数据库地交互。JDBC语句使用一个单独地数据调用、SQL语句包。如果对象存在于数据库中,例如使用CallableStatement(java.CallableStatement)进行储存。储存过程需要一个增强地可以理解地SQL,我们将在第14章中学习储存过程地先进性。语句运送命令到数据库,但是结果将返回ResultSets(java.sql.ResultSet)。结果将对象设置为一个完全地java对象,具有很多功能。每个ResultSet将结果行返回,或者将CallableStatement作为一个条目。要访问结果中下一行地数据,调用next()方法。说明:要访问数据,用户必须调用ResultSet的next方法:如果数据包含在ResultSet中,next将返回true。如果ResultSet为空,next将返回false。用户在试图读取任何数据前,都必须调用next。一旦ResultSet调用next
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届云南省大理、丽江、怒江化学高三上期末达标测试试题含解析
- 安徽省池州市贵池区2026届化学高三第一学期期中统考模拟试题含解析
- 教师资格证考试(中学科目二)2025年专项训练教育知识与能力解析试卷
- 河南省郑州市四校2026届化学高一第一学期期中质量跟踪监视试题含解析
- 2025年小学语文写作技巧专项训练试卷
- 2025年教师资格证考试(小学科学)教学技能测试专项训练
- 2025年高考数学数列专题复习试卷
- 2026届广东省揭阳市高一化学第一学期期末联考模拟试题含解析
- 2026届黔南市重点中学化学高三上期末教学质量检测模拟试题含解析
- 研究岗面试题目及答案
- 2025秋开学典礼 校长引用电影《长安的荔枝》讲话:荔枝尚早,路正长远-在时光中奔跑,用行动送达自己的“长安”
- 家庭食品卫生知识培训课件
- 地铁安保培训课件
- 2025年广西南宁职业技术大学招聘教职人员考试笔试试题(含答案)
- 红十字应急救护创伤止血
- 2025-2026学年高二上学期开学入学教育主题班会【课件】
- 学堂在线 大学历史与文化 章节测试答案
- 大学澡堂管理办法
- 汉语言文学转专业考试题目含答案
- 出租房屋安全管理办法
- 2025年党建知识竞赛题库及答案(完整版)
评论
0/150
提交评论