JDBC攻坚学习笔记

上传人:枫** 文档编号:547807657 上传时间:2023-06-25 格式:DOC 页数:16 大小:134KB
返回 下载 相关 举报
JDBC攻坚学习笔记_第1页
第1页 / 共16页
JDBC攻坚学习笔记_第2页
第2页 / 共16页
JDBC攻坚学习笔记_第3页
第3页 / 共16页
JDBC攻坚学习笔记_第4页
第4页 / 共16页
JDBC攻坚学习笔记_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《JDBC攻坚学习笔记》由会员分享,可在线阅读,更多相关《JDBC攻坚学习笔记(16页珍藏版)》请在金锄头文库上搜索。

1、JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API。JDBC是J2SE的一部分,由java.sql.javax.sql包组成。JDBC的核心是接口,Driver实现了JDBC的接口。SUN公司设计接口(或者规范、标准),生产厂商来实现这些接口,即它们各自的Driver。JAVA程序包括JAVA应用程序和小应用程序,主要是根据JDBC方法实现对数据库的访问和操作。完成的主要任务有:请求与数据库建立连接;向数据库发送SQL请求;为结果集定义存储应用和数据类型;查询结果;处理错误;控制传输、提交及关闭连接到呢个操作。JDBC管理器为我们

2、提供了一个“驱动程序管理器”,它能够动态地管理和维护数据库查询所需要的所有驱动程序对象,实现JAVA程序与特定驱动程序的连接,从而体现JDBC的“与平台无关”这一特点。它完成的主要任务有:为特定数据库选择驱动程序;处理JDBC初始化调用;为每个驱动程序提供JDBC功能的入口;为JDBC调用执行参数等。驱动程序处理JDBC方法,想特定数据库发送SQL请求,并为JAVA程序获取结果。在必要的时候,驱动程序可以翻译或优化请求,使SQL请求符合DBMS支持的语言。驱动程序可以完成下列任务:建立与数据库的连接;向数据库发送请求;用户程序请求时,执行翻译;将错误代码格式化成标准的JDBC错误代码等。JDB

3、C是独立于数据库管理系统的,而每个数据库系统均有自己的协议与客户机通信,因此,JDBC利用数据库驱动程序来使用这些数据库引擎。JDBC驱动程序有数据库软件商和第三方的软件商提供,因此,根据编程所使用的数据库系统不同,所需要的驱动程序也有所不同。应用程序JDBCDB2 DriverOracleDB2MySQL四类JDBC驱动程序尽管存在数据库语言标准SQL-92,但由于数据库技术发展的原因,各公司开发的SQL存在着一定的差异。因此,当我们想要连接数据库并存取其中的数据时,选择适当类型的JDBC驱动程序是非常重要的。目前JDBC驱动程序可细分为四种类型,如下图所示。不同类型的JDBC驱动程序有着不

4、一样的特性和使用方法。下面将说明不同类型的JDBC驱动程序之间的差异。类型1:JDBC-ODBC Bridge。这类驱动程序的特色是必须在我们的计算机上事先安装好ODBC驱动程序,然后通过JDBC-ODBC Bridge的转换,把JAVA程序中使用的JDBC API转换成ODBC API,进而通过ODBC来存取数据库。类型2:JDBC-Native API Bridge。同类型1一样,这类驱动程序也必须在我们的计算机上先安装好特定的驱动程序(类似ODBC),然后通过JDBC-Native API Bridge的转换,把JAVA程序中使用的JDBC API转换成Native API,进而存取数据

5、库。类型3:JDBC-Middleware。必须在安装数据库管理系统的服务器端加装软件(Middleware),中介软件会负责所有存取数据库时必要的转换。类型4:Pure JDBC Driver。使用这类驱动程序时无需安装任何附加的软件,所有存取数据库的操作都直接有JDBC驱动来完成。用JDBC连接Oracle数据库方法一:在Tomcat中配置Oracle的驱动程序Oracle JDBC驱动程序的位置:H:Oraclejdbclibclasses12.jar将此驱动程序拷贝到Tomcat的安装目录的lib文件之中:C:Program Filesapache-tomcat-6.0.14lib此时

6、Tomcat就可以连接到oracle驱动程序Oracle驱动名称:使用Class.forName()方法加载相应的数据库驱动程序:Class.forName(oracle.jdbc.driver.OracleDriver);oracle.jdbc.driver.OracleDriver我们不必死记,在Oracle驱动程序classes12.jar下面的oralce.jdbc.dreiver包中就可找到相应OracleDriver.class。Oracle连接地址:String URL=”jdbc:oracle:thin:127.0.0.1:1521:myOracle”; 或者:String U

7、RL=”jdbc:oracle:thin:localhost:1521:myOracle”;Connection ct=DriverManager.getConnection(URL);其中jdbc是协议,1521是Oracle默认的端口号,myOracle是数据库的名称与使用JDBC-ODBC类似,只是连接的驱动名称和驱动地址改变。方法二:JDBC-ODBC Bridge方法Oracle驱动名称:使用Class.forName()方法加载相应的数据库驱动程序:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Oracle连接地址:String URL=”

8、jdbc:odbc:odbcName”;Connection ct=DriverManager.getConnection(URL);其中odbcName是我们设置的要创建的数据源。连接数据库的步骤:1、注册驱动(只做一次)Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);2、建立连接(Connection)String URL=”jdbc:odbc:odbcName”;Connection ct=DriverManager.getConnection(URL,”scott”,”tiger”);数据库连接(Connection)是非常稀有的资源,用完后必须

9、马上释放,如果Connection不能及时正确的关闭或释放将导致系统脱机。Connection的使用原则是尽量晚的创建,尽量早的释放。3、创建执行SQL的语句(Statement)Statement st=ct.createStatement();4、执行语句(ResultSet)ResultSet rs=st.executeQuery(“select * from emp”);5、处理执行结果While(rs.next()System.out.println(“用户名:”+rs.getString(2);6、关闭和释放资源rs.close();sm.close();ct.close();为了

10、确保JDBC资源不在出现异常或错误等情况下被不正常关闭,我们应该在用完JDBC资源之后关闭且释放他们。JDBC连接池提供了JDBC连接定义和数目有限的连接,如果数量不够,就需要长时间等待。不正常关闭JDBC连接会导致等待回收无效的JDBC连接。只有正常的关闭和释放JDBC连接,JDBC资源才可以被快速的重用,使性能得到改善。为了确保构建的代码在所有的情况下,甚至是异常和错误条件下,都能关闭和释放JDBC资源。一下代码显示了JDBC资源的获得和使用都封装在“Try-Catch-Finally”结构中。其中,在finally子句中处理JDBC资源的关闭,使所有情况下关闭都将发生。为了简洁,此代码中

11、只把异常抛出并为对异常进行处理。public static void main(String args) throws ExceptionString url=jdbc:oracle:thin:localhost:1521:myOracle;Connection ct=null;Statement st=null;ResultSet rs=null;try /1.加载驱动Class.forName(oracle.jdbc.driver.OracleDriver);/2.得到连接ct=DriverManager.getConnection(url, scott,tiger);/创建执行的SQL语

12、句st=ct.createStatement();/执行语句rs=st.executeQuery(select * from emp);/处理执行结果while(rs.next()/用户名System.out.println(用户名:+rs.getString(2); finallytryif(rs!=null)rs.close();finallytryif(st!=null)st.close();finallyif(ct!=null)ct.close();代码优化:新建一个(public final)工具类JdbcUtils,把优化后的代码都放在这个类里面。由于这个类不需要构造实例,因此我们

13、我们定义一个private的构造方法,这样别人就无法new一个对象了。访问这个类有两种方式:一种是单例模式,但是比较复杂;另一种是提供一些静态方法。1、由于驱动只需要注册一次,我们知道静态代码块只有类被装载到虚拟机的时候才被执行一次,因此,我们把注册驱动语句放在一个静态的代码块中。statictry Class.forName(jdbc:odbc:wanghao); catch (ClassNotFoundException e) throw new ExceptionInInitializerError(e);2、当我们的增、删、改、查的操作很多时,如果程序中每个方法都有URL、用户名和密码

14、,我们修改起来就会很麻烦。我们也需要对这一块优化,把他们放到JdbcUtils中,这样就可以实现“一改全改”。private static String url=sun.jdbc.odbc.JdbcOdbcDriver;private static String user=scott;private static String password=tiger;3、建立连接语句我们也可以把它放在JdbcUtils的一个静态方法中,当我们需要链接时,我们就到JdbcUtils中去取。public static Connection getConnection() throws SQLExceptionreturn DriverManager.getConnection(url, user, password);4、对释放资源部分进行优化。public static void free(ResultSet rs,Statement st,Connection ct)tryif(rs!=null)rs.close();catch(SQLException e)e.printStackTrace();finallytryif(st!=null)st.close();catch(SQLException

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

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号