JavaEE数据库开发基础.ppt

上传人:wuy****n92 文档编号:70796690 上传时间:2023-01-28 格式:PPT 页数:36 大小:893.50KB
返回 下载 相关 举报
JavaEE数据库开发基础.ppt_第1页
第1页 / 共36页
JavaEE数据库开发基础.ppt_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《JavaEE数据库开发基础.ppt》由会员分享,可在线阅读,更多相关《JavaEE数据库开发基础.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第4章 JavaEE数据库开发基础JDBC是Java程序连接和存取数据库的应用程序接口(API),此接口是Java核心API的一部分。JDBC向应用程序开发者提供了独立于数据库的统一的API。JDBC是由一组驱动程序实现的Java接口,驱动程序负责从标准JDBC调用向支持的数据库所需要的具体调用转变。除了向开发者提供统一的独立于DBMS之外的框架,JDBC还提供了让开发者保持数据库厂家提供的特定功能的办法。5.1 JDBC概述概述JDBC(Java DataBase Connection)是Java数据库访问API的统称,主要完成以下功能:1.与一个数据库建立连接。2.向数据库发送SQL语句。

2、3.处理数据库返回的结果。JDBC API n在java.sql包中主要提供了以下接口JDBC的结构nJDBC有两种接口,分别是面向开发人员的JDBC API和面向低层的JDBC Driver APInJDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果。JDBC的结构njava.sql.DriverManager用来装载驱动程序,并且为创建新的数据库连接提供支持。njava.sql.Connection完成对某一指定数据库的连接。njava.sql.Statement在一个给定的连接中作为SQL执行声明的容器,它包含了两个重要的子类型。ljav

3、a.sql.PreparedSatement用于执行预编译的sql声明ljava.sql.CallableStatement用于执行数据库中存储过程的调用njava.sql.ResultSet对于给定声明取得结果的途径JDBC接口之间的关系5.2 JDBC API的应用的应用访问数据库的步骤Statement的使用n创建:connection.createStatement()n执行select查询语句:lstatement.executeQuery(“查询语句)n执行insert、update、delete等更新语句:lstatement.executeUpdate(“更新语句”)n如lex

4、ecuteUpdate(insert into MyFriend(name,age,qq)values(+name+,+age+,+qq+)name=“abc”,age=20,qq=“1234”时执行如下SQL语句linsert into MyFriend(name,age,qq)values(abc,20,1234)ResultSet的使用n创建:executeQuery(SQL语句)n定位记录:next()方法n访问数据:getXXX(int)或getXXX(String)l其中XXX为一数据类型名称,lint为列编号(从1开始编号),String为列名。l如getInt(2),getSt

5、ring(name)n对照lINT、INTEGER getInt()lTINYINT、SMALLINTgetShort()lBIGINT getLong()l DATE getDate()lCHAR、VARCHAR getString()lFLOATgetFloat()JAVA访问数据库示例1n读入ACCESS数据库的内容n数据库 LIB.mdbl表 userJDBC-ODBC方法1.Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);2.Connection con=DriverManager.getConnection(jdbc:odbc:tt);3.S

6、tatement sql=con.createStatement();4.ResultSet rs=sql.executeQuery(select*from user);5.while(rs.next()6.System.out.print(rs.getInt(ID)+t);7.System.out.print(rs.getString(2)+t);8.System.out.print(rs.getString(3)+t);9.System.out.print(rs.getInt(4)+t);10.System.out.print(rs.getInt(5)+t);11.System.out.p

7、rintln(rs.getDate(6);12.13.rs.close();14.sql.close();15.con.close();建立ODBC-名称为 tt多种方法访问数据库n通过JSP访问数据库n通过Servlet访问数据库n通过JavaBean访问JSP访问数据库1.2.JDBC实例:通过JSP访问数据库 3.9.10.jsp.jspJSP访问数据库1.if(rs.next()%2.3.4.序号 姓名 电话5.年龄 QQ 日期6.7.%do 8.out.println();9.out.println(+rs.getString(1)+);10.out.println(+rs.getS

8、tring(2)+);11.out.println(+rs.getString(3)+);12.out.println(+rs.getString(4)+);13.out.println(+rs.getString(5)+);14.out.println(+rs.getString(6)+);15.out.println();16.while(rs.next();%17.jsp.jspServlet访问数据库1.protected void doGet(HttpServletRequest request,HttpServletResponse response)2.throws Servle

9、tException,IOException 3.response.setContentType(text/html;charset=gb2312);4.PrintWriter out=response.getWriter();5.out.println(JDBC实例:通过Servlet访问数据库);6.try 7.Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);8.Connection con=DriverManager.getConnection(jdbc:odbc:tt);9.Statement sql=(Statement)con.createS

10、tatement();10.11.ResultSet rs=sql.executeQuery(select*from user);12.if(rs.next()13./if结束14.catch(Exception e)15.out.println(e);16.17.Servlet.javaServlet访问数据库1.out.println();2.out.println(序号姓名);3.out.println(电话年龄);4.out.println(QQ日期);5.do 6.out.println();7.out.println(+rs.getString(1)+);8.out.println

11、(+rs.getString(2)+);9.out.println(+rs.getString(3)+);10.out.println(+rs.getString(4)+);11.out.println(+rs.getString(5)+);12.out.println(+rs.getString(6)+);13.out.println();14.while(rs.next();15.out.println();Servlet.java通过JavaBean访问1.package mybean;2.import java.sql.*;3.public class DBConnection 4.p

12、rivate Connection conn;5.public void init(String className,String URL)6.try 7.Class.forName(className);8.conn=DriverManager.getConnection(URL);9.catch(Exception e)10.System.out.println(e);11.12.13.public Connection getConnection()14.return conn;15.16.DBConnection.java通过JavaBean访问1.JDBC实例:通过JavaBean访

13、问数据库2.3.9.10.11.序号姓名电话12.年龄QQ日期13.14.%do 15.out.println();16.out.println(+rs.getString(1)+);17.18.out.println(+rs.getString(6)+);19.out.println();20.while(rs.next();%21.22.JavaBean.JSP可滚动的ResultSetn通过createStatement(int,int)创建Statement时可以指定第一个参数指定游标类型可为下面的值,以便支持可滚动的记录集lResultSet.TYPE_FORWARD_ONLY:默认

14、的cursor类型,仅仅支持向前forward,不支持backforward,random,last,first操作,类似单向链表。不可滚动的记录集,数据库发生变化时不可见。是效率最高最快的cursor类型lResultSet.TYPE_SCROLL_INSENSITIVE:支持backforward,random,last,first操作,对其它数据session对选择数据做出的更改是不敏感,不可见的。可滚动的记录集,数据库的变化不可见lResultSet.TYPE_SCROLL_SENSITIVE:支持backforward,random,last,first操作,对其它数据session

15、对选择数据做出的更改是敏感,可见的。可滚动的记录集,数据库的变化可见。n移动记录指针的方法包括lnext()、last()、previous()、first()等等。游标类型总结可更新的ResultSetn通过createStatement(int,int)创建Statement时可以指定第二个参数为下面的值,以便支持可更新的记录集lResultSet.CONCUR_READ_ONLY:记录集不可更新lResultSet.CONCUR_UPDATABLE:记录集可更新n更新记录的方法包括lupdateInt(int,int)、updateInt(String,int)、updateRow()、

16、insertRow()、deleteRow()等等。其他类型数据库的驱动程序nMySQL驱动程序及URL:l驱动:com.mysql.jdbc.Driver lurl:jdbc:mysql:/127.0.0.1:3306/myfriendnSQL Server驱动程序及URL:l驱动:com.microsoft.sqlserver.jdbc.SQLServerDriver lurl:jdbc:sqlserver:/localhost:1433;databaseName=myfriend;user=MyUserName;password=*;nOracle驱动程序及URL:l驱动:oracle.

17、jdbc.driver.OracleDriver lurl:jdbc:oracle:thin127.0.0.1:myfriend5.3连接池、DataSource及其应用n1 数据库连接池l传统的JDBC API访问数据库时,需要频繁建立数据库连接Connection对象,导致系统的整体性能降低。l数据库连接池(Connection Pool)是一种数据库连接共享技术。l数据库连接池的基本思想是为数据库连接建立一个“缓冲池”,即初始化连接池时在缓冲池中创建一定数量的数据库连接。当应用组件需要获取数据库连接时,只需从缓冲池中取出一个,使用完毕之后再释放到连接池中。l数据库连接池在初始化时创建一定

18、数量的数据库连接,其数量由最小数据库连接数来设定。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这些连接。l连接池的最大数据库连接数量限定了连接池能建立的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。连接池原理实验1.2.3.4.5.6.连接池举例7.8.9.数据库连接池实例10.使用连接池连接50000次11.12.不使用连接池连接50次13.14.index.jsp连接池类 ConnectionPool 1.package db;2.import java.sql.*;*3.import java.util.Vector;4.publ

19、ic class ConnectionPool 5.private Vector pool;6.private int poolSize=10;7.private static ConnectionPool instance=null;8.public static ConnectionPool getInstance()9.if(instance=null)10.instance=new ConnectionPool();11.12.return instance;13.1连接池类 ConnectionPool 1.private ConnectionPool()2.pool=new Vec

20、tor(poolSize);3.Connection conn=null;4.for(int i=0;i 0)3.Connection conn=pool.get(0);4.pool.remove(conn);5.return conn;6.else 7.return null;8.9.10.public synchronized void release(Connection conn)11.pool.add(conn);12.13.3使用连接池 1.2.%3.db.ConnectionPool cp=db.ConnectionPool.getInstance();4.long start=

21、System.currentTimeMillis();5.int loops=Integer.parseInt(request.getParameter(loops);6.for(int i=0;i loops;i+)7.Connection cn=cp.getConnection();8.if(cn!=null)9.cp.release(cn);10.11.12.out.print(利用连接池连接+loops+次,用时13.+(System.currentTimeMillis()-start)+ms);14.%15.useloops.jsp不使用连接池 1.2.3.4.%5.long sta

22、rt=System.currentTimeMillis();6.int loops=Integer.parseInt(request.getParameter(loops);7.Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);8.for(int i=0;i loops;i+)9.Connection cn;10.try =DriverManager.getConnection(12.jdbc:odbc:tt);13.catch(Exception e)14.System.out.println(e);15.break;16.17.if(cn!=null)

23、.close();19.20.21.out.print(不用连接池连接+loops+次,用时+(System.currentTimeMillis()-start)+ms);noloops.jsp实际时间对比J2EE中数据库连接池的使用nJDK只提供了数据库连接池相关的DataSource接口,具体实现由数据库驱动厂商或Web服务平台器提供。nDataSource接口对象负责具体的连接池管理。使用DataSource时,需要通过查询JNDI(Java Naming and Directoru Interface)服务器得到DataSource,再利用该对象获取Connection对象。n应该在w

24、eb应用的META-INFcontext.xml中定义数据源,并在web.xml中定义该数据源的参考。如果要为所有Web应用提供相同的数据源,可以利用tomcat 6.0confserver.xml定义数据源。Context.xml的数据源定义nweb.xml中的数据源定义nljdbc/DataSourceExamplellllContainerln通过DataSource连接数据库的关键代码nInitialContext context=new InitialContext();nDataSource dataSource=(DataSource)context.lookup(数据源名称);

25、nconn=dataSource.getConnection();nnconn.close();通过DataSource访问数据库实例1.%page import=java.sql.*,javax.naming.*,javax.sql.*contentType=text/html pageEncoding=UTF-8%2.JDBC实例:通过DataSource访问数据库 3.10.11.序号姓名电话年龄QQ日期12.%do 13.out.println();14.out.println(+rs.getString(1)+);15.16.out.println(+rs.getString(6)+);17.out.println();18.while(rs.next();%19.20.22.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁