《JDBC数据库访问技术.ppt》由会员分享,可在线阅读,更多相关《JDBC数据库访问技术.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JDBC数据库访问技术什么是JDBCJDBC(JavaDataBaseConnectivity)是Java与数据库的接口规范JDBC定义了一个支持标准SQL功能的通用底层的应用程序编程接口(API)定义了若干Java中的类,表示数据库连接、SQL指令、结果集、数据库元数据等2JDBC特性独立于特定数据库对硬件平台、操作系统异构性的支持JDBC驱动程序管理器是内置的,驱动程序本身也可通过Web浏览器自动下载,无须安装、配置在不同数据库功能模块层次上提供统一的用户界面,可以实现不同的数据库连接.3JDBC操作步骤加载驱动程序(向系统注册所需要的JDBC驱动程序).建立到指定数据库的连接.提交数据库
2、查询获取查询结果4连接(Connection)Connection对象代表与数据库的连接连接过程包括所执行的SQL语句和在该连接上所返回的结果5打开连接与数据库建立连接的标准方法是调用DriverManager.getConnection方法例子如下:6打开连接例子privateStringurl=jdbc:microsoft:sqlserver:/localhost:1433;DataBaseName=mydb;privateStringusername=sa;privateStringpassword=sa;publicvoidtestJDBC()try Class.forName(com
3、.microsoft.jdbc.sqlserver.SQLServerDriver).newInstance();/第一中加载驱动的方法/DriverManager.registerDriver(newcom.microsoft.jdbc.sqlserver.SQLServerDriver();/第二种为注册驱动的方法conn=DriverManager.getConnection(url,username,password);System.out.println(数据库连接成功);catch(Exceptione)e.printStackTrace();7JDBCURLJDBCURL提供了一
4、种标识数据库的方法,可以使相应的驱动程序能识别该数据库并与之建立连接JDBCURL应允许驱动程序编程员将一切所需的信息编入其中,而无须要求用户去做任何系统管理工作JDBCURL应允许某种程度的间接性。也就是说,JDBCURL可指向逻辑主机或数据库名,而这种逻辑主机或数据库名将由网络命名系统动态地转换为实际的名称8JDBCURL的标准语法JDBCURL的标准语法如下所示。它由三部分组成,各部分间用冒号分隔:jdbc:jdbc协议。JDBCURL中的协议总是jdbc驱动程序名或数据库连接机制的名称一种标识数据库的方法9JDBCURL举例Jdbc:oracle:thin:127.0.0.1:1521
5、:edudbJdbc:microsoft:sqlserver:/localhost:1433Jdbc:microsoft:sqlserver:/localhost:1433;DataBaseName=mydb10发送SQL语句JDBC提供了三个类,用于向数据库发送SQL语句StatementPreparedStatementCallableStatement11对象Statement由Connection的方法createStatement所创建Statement对象用于发送简单的SQL语句12对象PreparedStatement由Connection的方法prepareStatement所
6、创建PreparedStatement对象用于发送带有一个或多个输入参数的SQL语句PreparedStatement的实例扩展了Statement,因此它们都包括了Statement的方法PreparedStatement对象有可能比Statement对象的效率更高,因为它已被预编译过并存放在那以供将来使用13对象CallableStatement由方法prepareCall所创建。CallableStatement对象用于执行SQL储存程序一组可通过名称来调用的SQL语句14事务事务由一个或多个这样的语句组成:这些语句已被执行、完成并被提交或还原当调用方法commit或rollback时,
7、当前事务即告就结束,另一个事务随即开始方法commit使SQL语句对数据库所做的任何更改成为永久性的,它还将释放事务持有的全部锁。而方法rollback将弃去那些更改15事务隔离级别必须有某种途径来管理两个事务同时对一个数据库进行操作时可能发生的冲突五个隔离级别TRANSACTION_NONETRANSACTION_READ_UNCOMMITTEDTRANSACTION_READ_COMMITTEDTRANSACTION_REPEATABLE_READTRANSACTION_SERIALIZABLE使用Connection.setTransactionIsolation()设置你想要的事物级别
8、16DriverManagerDriverManager类是JDBC的管理层,作用于用户和驱动程序之间跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接17跟踪可用驱动程序DriverManager类包含一列Driver类,它们已通过调用方法DriverManager.registerDriver对自己进行了注册所有Driver类都包含一个静态部分,它创建该类的实例,然后在加载该实例时DriverManager类进行注册加载Driver类,然后自动在DriverManager中注册的方式Class.forName(acme.db.Driver);18建立连接加载Driver类并在Driv
9、erManager类中注册后,它们即可用来与数据库建立连接当调用DriverManager.getConnection方法发出连接请求时,DriverManager将检查每个驱动程序,查看它是否可以建立连接DriverManager将使用它所找到的第一个可以成功连接到给定URL的驱动程序Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/加载驱动程序Stringurl=jdbc:odbc:fred;DriverManager.getConnection(url,userID,passwd);19Statement语句创建Statement对象Stateme
10、ntstmt=con.createStatement();使用Statement对象执行语句executeQuery用于产生单个结果集的语句executeUpdate用于执行INSERT、UPDATE或DELETE语句以及SQLDDL(数据定义语言)语句语句完成连接处于自动提交模式连接处于非自动提交模式关闭Statement对象作为一种好的编程风格,应在不需要Statement对象时显式地关闭它们20结果设置ResultSetResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问例子java.sql.Statementstmt=conn.crea
11、teStatement();ResultSetr=stmt.executeQuery(SELECTa,b,cFROMTable1);while(r.next()inti=r.getInt(a);Strings=r.getString(b);floatf=r.getFloat(c);21为什么使用连接池可能发生的情况:每一个页面请求导致一次数据库访问连接数据库不仅要开销一定的通讯和内存资源,还必须完成用户验证、安全上下文配置这类任务成百上千个用户如果某个基于数据库的Web应用只需建立一次初始连接,不同页面请求能够共享同一连接,就能获得显著的性能改善22未使用连接池的情况23使用了连接池的情况24Tomcat连接池配置Server.xmlWeb.xml25从连接池中获取连接DataSourceds=(DataSource)ctx.lookup(java:comp/env/jdbc/TestDB);if(ds!=null)Connectionconn=ds.getConnection();26谢谢!