《J2EE企业级软件开发》教学课件:(2014-03)JDBC和MySQL数据库
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DriverManager(java.sql.DriverManager):装载驱动程 序,管理应用程序与驱动程序之间的连接。 Driver(由驱动程序开发商提供):将应用程序的API 请求转换为特定的数据库请求。 Connection(java.sql.Connection):将应用程序连接到 特定的数据库。 Statement(java.sql.Statement):在一个给定的连接中 ,用于执行一个静态的数据库SQL语句。
数据库连接池使用方法2独立于web服务器的数据库连接池尽管现在大部分的应用服务器都提供了自己的数据库连接池方案但有些时候若我们的web应用是一个独立的应用程序并不是普通的webjavaee应用而且是单独运行的无须应用服务器的支持
Java EE企业级软件开发
JDBC与MySQL数据库
2014 洛阳师范学院 吕延庆
使用JDBC API访问数据库
(5)关闭相关连接 操作数据库完毕后,需要关闭相应连接以释放 资源,具体方法如下。
//关闭ResultSet实例rs rs.close(); //关闭Statement实例statement statement.close(); //关闭Connection实例con con.close();
数据库连接池简介
在实际应用开发中,如果JSP、Servlet等使用JDBC直 接访问数据库中的数据,每一次数据访问请求都必须 经历建立数据库连接、操作数据和关闭数据库连接等 步骤。
连接并打开数据库是一件既消耗资源又费时的工作。 如果频繁发生这种数据库操作,系统的性能必然会急剧下降 ,甚至会导致系统崩溃。 所谓数据库连接池,就是在一个虚拟的池中,预先创建好一 定数量的Connection对象等待客户端的连接,当有客户端连 接时,则分配一个空闲的Connection对象给客户端连接数据 库;当这个客户端请求结束时,则将Connection对象归还给 池中,用来等待下一个客户端的访问。
2. JDBC常用类和接口(2)
PreparedStatement(java.sql.PreparedStatement):用于执 行一个含有参数的动态SQL语句,该接口为Statement接口 的子接口。 CallableStatement(java.sql.CallableStatement):用于执行 SQL存储过程的接口,该接口为PreparedStatement的子接 口。 ResultSet(java.sql.ResultSet):SQL语句中心完后,返回 的数据结果集(包括行、列)。 Metadata(包括java.sql.DatabaseMetadata和java.sql. ResultSetMetadata):关于查询结果集、数据库和驱动程 序的元数据信息。
安装和配臵MySQL数据库
(4)修改表 为了将属性id从TINYINT 改变为INTEGER(属性名不变),并将属性title 从 VARCHAR(100) 改变为VARCHAR(200),同时也将title重命名为t。 ALTER TABLE news MODIFY id INTEGER NOT NULL, CHANGE title t VARCHAR(200); (5)删除表 删除新闻表news。 DROP TABLE news; (6)添加记录 向数据表news中添加一条记录。 INSERT INTO `news` (`id`,`title`,`username`,`content`,`submitTime`,`viewCount`, `catalogs`,`attachment`) VALUES (1,'新闻标题','张三','新闻内容','2009-12-14 00:00:00',1,'5','null'); (7)查询记录 查询新闻编号id为1记录的所有属性信息。 SELECT * from news where id = 1;
3.使用JDBC API访问数据库
使用JDBC连接数据库的基本步骤
MySQL数据库简介
MySQL简介:
较好的可移植性; 支持包括Windows、Linux、Solaris在内的多种操作系统; 为Java、PHP、.NET、C等多种编程语言提供了API; 支持多线程技术; 优化的SQL查询算法,有效地提高查询速度; 提供了TCP/IP、ODBC和JDBC等多种数据库连接途径; 提供了用于管理、检查、优化数据库操作的管理工具; 具有处理千万条记录的能力; 支持多种字符编码。
本节内容提纲
JDBC简介 JDBC的常用类和接口
使用JDBC API访问数据库
MySQL简介 数据库连接池 在Java Web程序中使用数据库
1. JDBC简介
Java应用程序通过JDBC(Java DataBase Connectivity,JDBC )技术访问数据库; JDBC是一个独立于特定数据库管理系统的、提供了通用的 SQL数据库存取和操作的公共接口(一组API),定义了用 来访问数据库的标准Java类库(java.sql包),使用这个类库 可以以一种标准的方法、方便地访问数据库资源。 JDBC为访问不同的数据库提供了一种统一的途径,像ODBC (Open Database Connectivity,ODBC)一样,JDBC对开发 者屏蔽了一些具体的细节问题。JDBC的目标是使Java应用程 序开发人员使用JDBC就可以连接任何提供了JDBC驱动程序 的数据库系统,并且开发人员无须对一些特定数据库系统有 过多的了解,从而大大简化和加快开发过程。
Hale Waihona Puke 安装和配臵MySQL数据库
(8)删除记录 删除新闻编号id为1的记录。 DELETE FROM news WHERE id = 1; (9)修改记录 修改编号id为1的记录,其标题title为“新的标题”。 UPDATE TABLE news SET title = "新的标题" WHERE id = 1; (10)使用存储过程 建立一个存储过程,其名称为sp_searchnews且带有一个int类型的 输入参数p_id,该存储过程的功能是检索id大于参数p_id的所有 news表中的记录。 CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_searchnews` (in p_id int) begin select * from news where id > p_id; end
基本的SQL语句: (1)创建数据库 创建一个名为newsdb的数据库: CREATE datebase newsdb; (2)删除数据库 删除一个名为newsdb的数据库: DROP database newsdb; (3)创建表 创建表一个数据表news。
安装和配臵MySQL数据库
USE newsdb; CREATE TABLE `news` ( `id` bigint(20) unsigned NOT NULL auto_increment, `title` varchar(100) NOT NULL, `username` varchar(20) NOT NULL, `content` text, `submitTime` datetime default NULL, `viewCount` int(10) unsigned default NULL, `catalogs` varchar(20) default NULL, `attachment` varchar(100) default NULL, PRIMARY KEY (`id`));
JDBC简介
2. JDBC常用类和接口
JDBC主要的接口和类包括Driver接口、 DriverManager类、Connection接口、Statement接 口、PreparedStatement接口、CallableStatement接 口、ResultSet接口以及Metadata类。
使用JDBC API访问数据库
(4)对操作结果进行分析 执行SELECT语句后,必然产生一个ResultSet结果集实例。对结果 集分析是Java应用程序的最终目的。一般来说可以使用循环遍历结 果集,然后使用ResultSet的getXxx()方法取得指定行指定列的数据 。 while(rs.next()) { int id = rs.getInt("id"); String title = rs.getString("title"); String username = rs.getString("username"); Date time = rs.getDate("submitTime"); System.out.println("编号:" + id + ", 标题:" + title + ",作者:" + username + ",发布日期:" + time); }
使用JDBC API访问数据库
(3)进行数据库操作 对数据库的操作是依赖于SQL语句的,每执行一条SQL语句,都 需要利用Connetcion实例的createStatement()方法来创建一个 Statement实例。然后通过Statement实例的execute()方法、 executeQuerry()方法或者executeUpdate()等方法执行SQL语句。 例如:下面的是查询news表中所有的记录。 Statement statement = con.createStatement(); ResultSet rs = statement.executeQuerry("SELECT * FROM news"); 下面是删除news表中id为10的记录: Statement statement = con.createStatement(); int result=statement.executeUpdate("DELETE FROM news WHERE id=10");
String sql ="select * from news"; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); if (rs!=null){ st(); System.out.println(rs.getRow()); }
使用JDBC API访问数据库
(1)加载JDBC驱动程序 在应用程序中,有2种常用的方法加载JDBC驱动程序。(以加载JDBCODBC桥驱动为例) 利用System类的静态方法setProperty(),方法如下: System.setProperty("jdbc.drivers", "sun.jdbc.odbc.JdbcOdbcDriver"); 利用Class类的类方法forName(),方法如下: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); (2)建立与数据库的连接 利用DriverManager类的类方法getConnection()来获得与特定数据库的连接 实例(Connection实例)。例如与本地MySQL数据库newsdb连接,假设 用户名为root,密码为passwd,方法如下。 Connection con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/newsdb?user=root&password=passwd"); 或者: Connection con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/newsdb",root,passwd);
JDBC实现查询 (较完整实例)
Class.forName("com.mysql.jdbc.Driver"); // driver class Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mytest", "root",“123456"); // JDBC url, username, password