《JDBC和MySQL数据库.ppt》由会员分享,可在线阅读,更多相关《JDBC和MySQL数据库.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JavaEE企业级软件开发JDBC与MySQL数据库2014 洛阳师范学院 吕延庆本节内容提纲nJDBC简介nJDBC的常用类和接口q使用JDBCAPI访问数据库nMySQL简介n数据库连接池n在JavaWeb程序中使用数据库1.JDBC简介nJava应用程序通过JDBC(JavaDataBaseConnectivity,JDBC)技术访问数据库;nJDBC是一个独立于特定数据库管理系统的、提供了通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库(java.sql包),使用这个类库可以以一种标准的方法、方便地访问数据库资源。nJDBC为访问不同的数据库
2、提供了一种统一的途径,像ODBC(OpenDatabaseConnectivity,ODBC)一样,JDBC对开发者屏蔽了一些具体的细节问题。JDBC的目标是使Java应用程序开发人员使用JDBC就可以连接任何提供了JDBC驱动程序的数据库系统,并且开发人员无须对一些特定数据库系统有过多的了解,从而大大简化和加快开发过程。JDBC简介2.JDBC常用类和接口JDBC主要的接口和类包括Driver接口、DriverManager类、Connection接口、Statement接口、PreparedStatement接口、CallableStatement接口、ResultSet接口以及Metad
3、ata类。qDriverManager():装载驱动程序,管理应用程序与驱动程序之间的连接。qDriver(由驱动程序开发商提供):将应用程序的API请求转换为特定的数据库请求。qConnection():将应用程序连接到特定的数据库。qStatement():在一个给定的连接中,用于执行一个静态的数据库SQL语句。2.JDBC常用类和接口(2)nPreparedStatement():用于执行一个含有参数的动态SQL语句,该接口为Statement接口的子接口。nCallableStatement():用于执行SQL存储过程的接口,该接口为PreparedStatement的子接口。nRes
4、ultSet():SQL语句中心完后,返回的数据结果集(包括行、列)。nMetadata(包括和java.sql.ResultSetMetadata):关于查询结果集、数据库和驱动程序的元数据信息。3.使用JDBCAPI访问数据库n使用JDBC连接数据库的基本步骤MySQL数据库简介nMySQL简介:q较好的可移植性;q支持包括Windows、Linux、Solaris在内的多种操作系统;q为Java、PHP、.NET、C等多种编程语言提供了API;q支持多线程技术;q优化的SQL查询算法,有效地提高查询速度;q提供了TCP/IP、ODBC和JDBC等多种数据库连接途径;q提供了用于管理、检查
5、、优化数据库操作的管理工具;q具有处理千万条记录的能力;q支持多种字符编码。安装和配置MySQL数据库n基本的基本的SQL语句:语句:(1)创建数据库创建一个名为newsdb的数据库:CREATEdatebasenewsdb;(2)删除数据库删除一个名为newsdb的数据库:DROPdatabasenewsdb;(3)创建表创建表一个数据表news。USE newsdb;CREATETABLEnews(idbigint(20)unsignedNOTNULLauto_increment,titlevarchar(100)NOTNULL,usernamevarchar(20)NOTNULL,con
6、tenttext,submitTimedatetimedefaultNULL,viewCountint(10)unsigneddefaultNULL,catalogsvarchar(20)defaultNULL,attachmentvarchar(100)defaultNULL,PRIMARYKEY(id);安装和配置MySQL数据库(4)修改表为了将属性id从TINYINT改变为INTEGER(属性名不变),并将属性title从VARCHAR(100)改变为VARCHAR(200),同时也将title重命名为t。ALTER TABLE news MODIFY idINTEGER NOT NU
7、LL,CHANGE titletVARCHAR(200);(5)删除表删除新闻表news。DROPTABLEnews;(6)添加记录向数据表news中添加一条记录。INSERTINTOnews(id,title,username,content,submitTime,viewCount,catalogs,attachment)VALUES(1,新闻标题,张三,新闻内容,2009-12-1400:00:00,1,5,null);(7)查询记录查询新闻编号id为1记录的所有属性信息。SELECT*fromnewswhereid=1;安装和配置MySQL数据库(8)删除记录删除新闻编号id为1的记录
8、。DELETEFROMnewsWHEREid=1;(9)修改记录修改编号id为1的记录,其标题title为“新的标题”。UPDATETABLEnewsSETtitle=新的标题WHEREid=1;(10)使用存储过程建立一个存储过程,其名称为sp_searchnews且带有一个int类型的输入参数p_id,该存储过程的功能是检索id大于参数p_id的所有news表中的记录。CREATE DEFINER=rootlocalhostPROCEDURE sp_searchnews(in p_id int)beginselect*from newswhere idp_id;end使用JDBCAPI访问
9、数据库(1)加载)加载JDBC驱动程序驱动程序在应用程序中,有2种常用的方法加载JDBC驱动程序。(以加载JDBC-ODBC桥驱动为例)利用System类的静态方法setProperty(),方法如下:System.setProperty(jdbc.drivers,sun.jdbc.odbc.JdbcOdbcDriver);利用Class类的类方法forName(),方法如下:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);(2)建立与数据库的连接)建立与数据库的连接利用DriverManager类的类方法getConnection()来获得与特定数据库
10、的连接实例(Connection实例)。例如与本地MySQL数据库newsdb连接,假设用户名为root,密码为passwd,方法如下。Connectioncon=DriverManager.getConnection(jdbc:mysql:/localhost:3306/newsdb?user=root&password=passwd);或者:Connectioncon=DriverManager.getConnection(jdbc:mysql:/localhost:3306/newsdb,root,passwd);使用JDBCAPI访问数据库(3)进行数据库操作)进行数据库操作对数据库的
11、操作是依赖于SQL语句的,每执行一条SQL语句,都需要利用Connetcion实例的createStatement()方法来创建一个Statement实例。然后通过Statement实例的execute()方法、executeQuerry()方法或者executeUpdate()等方法执行SQL语句。例如:下面的是查询news表中所有的记录。Statementstatement=con.createStatement();ResultSetrs=statement.executeQuerry(SELECT*FROMnews);下面是删除news表中id为10的记录:Statementstate
12、ment=con.createStatement();intresult=statement.executeUpdate(DELETEFROMnewsWHEREid=10);使用JDBCAPI访问数据库(4)对操作结果进行分析)对操作结果进行分析执行SELECT语句后,必然产生一个ResultSet结果集实例。对结果集分析是Java应用程序的最终目的。一般来说可以使用循环遍历结果集,然后使用ResultSet的getXxx()方法取得指定行指定列的数据。while(rs.next()intid=rs.getInt(id);Stringtitle=rs.getString(title);Stri
13、ngusername=rs.getString(username);Datetime=rs.getDate(submitTime);System.out.println(编号:+id+,标题:+title+,作者:+username+,发布日期:+time);使用JDBCAPI访问数据库(5)关闭相关连接)关闭相关连接操作数据库完毕后,需要关闭相应连接以释放资源,具体方法如下。/关闭ResultSet实例rsrs.close();/关闭Statement实例statementstatement.close();/关闭Connection实例concon.close();JDBC实现查询(较完整
14、实例)Class.forName();/driver classConnection conn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/mytest,root,“123456);/JDBC url,username,passwordString sql=select*from news;PreparedStatement pstmt=conn.prepareStatement(sql);ResultSet rs=pstmt.executeQuery();if(rs!=null)rs.last();System.out.pri
15、ntln(rs.getRow();数据库连接池简介n在实际应用开发中,如果JSP、Servlet等使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、操作数据和关闭数据库连接等步骤。q连接并打开数据库是一件既消耗资源又费时的工作。q如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。n数据库连接池技术是解决此类问题最常用的方法。q所谓数据库连接池,就是在一个虚拟的池中,预先创建好一定数量的Connection对象等待客户端的连接,当有客户端连接时,则分配一个空闲的Connection对象给客户端连接数据库;当这个客户端请求结束时,则将Conne
16、ction对象归还给池中,用来等待下一个客户端的访问。数据库连接池(Databasepool)工作原理n工作原理:(1)预定义一定数量的连接,并存放在数据库连接池中;(2)当客户端请求一个数据库连接时,连接池将为该请求从数据库连接池中分配一个空闲的连接,而不是重新建立一个连接对象;当该请求结束后,该连接会重新回到数据库连接池中,而不是直接将其释放;(3)当连接池中的空闲连接数量低于下限时,连接池将会根据配置信息追加一定数量的连接对象,当空闲连接数量高于上限时,连接池会释放一定数量的连接。数据库连接池使用方法n(1)基于)基于Web服务器的数据库连接池服务器的数据库连接池绝大多数Web服务器都支
17、持数据库连接池技术,下面以Tomcat服务器为例配置访问MySQL数据库的数据库连接池,具体步骤如下。第一步:第一步:在Web应用的META-INF下新建context.xml文件,配置数据源。2,修改WEB-INF/web.xml,添加如下内容:MySQLDatabaseDBPooljavax.sql.DataSourceContainer说明:(此步骤在有的JavaWeb服务器上可省略)这里的要与context.xml中的name属性一致5.数据库连接池简介第二步第二步:使用JNDI访问数据库连接池。nJDBC提供了接口,负责与数据库建立连接,在应用中无需编写连接数据库代码,便可直接从数据
18、源(context.xml)中获得数据库连接。n在DataSource中预先建立了多个数据库连接,这些数据库连接保存在数据库连接池中,当程序访问数据库时,只需从连接池中取出空闲的连接,访问结束后,再将连接归还给连接池。DataSource对象由Web服务器(例如Tomcat)提供,不能通过创建实例的方法来获得DataSource对象,需要利用Java的JNDI(JavaNamingandDirectoryInterface,Java命名和目录接口)来获得DataSource对象的引用数据库连接池示例代码publicstaticConnectiongetConnection()try/Conte
19、xt是javax.name包中的一个接口,用于查找数据库连接池的配置文件Contextctx=newInitialContext();/向上转型ctx=(Context)ctx.lookup(java:comp/env);DataSourceds=(DataSource)ctx.lookup(DBPool);conn=ds.getConnection();catch(Exceptione)e.printStackTrace();returnconn;数据库连接池使用方法(2)独立于)独立于Web服务器的数据库连接池服务器的数据库连接池尽管现在大部分的应用服务器都提供了自己的数据库连接池方案,但
20、有些时候,若我们的Web应用是一个独立的应用程序,并不是普通的Web/JavaEE应用,而且是单独运行的,无须应用服务器的支持。这种情况下,应用程序就需要建立独立的数据库连接池方案了。这里,介绍如何利用Apache的DBCP建立独立于Web服务器的数据库连接池。第一步:下载必需的JAR包,分别是:lDBCP包,目前最新版本为1.4,下载地址:;lPool包,目前最新版本为,下载地址:。将上述两个JAR文件加载到应用环境变量中即可使用它们创建独立于Web服务器的数据库连接池了。第二步:使用DBCP创建数据库连接池公共类。在创建数据库连接池公共类时,可以使用XML文件来传入需要的参数或者.properties资源文件。(具体配置步骤,将在后面讲Spring框架时进行)