JDBC技术简介

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JDBC技术简介JDBC概述JDBC(JavaDataBaseConnectivity,Java数据库连接)是一套允许Java与SQL数据库对话的程序设计接口,它是用于执行SQL语句的JavaAPI,是Java应用程序连结数据库、存取数据的一种机制,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组成。•有了JDBC,用户只需用JDBCAPI写一个程序逻辑,它可以向各种不同的数据库发送SQL语句。所以,在使用Java编程语言编写应用程序时,不用再去为不同的平台编写不同的应用程序。由于Java语言具有跨平台性,所以将Java和JDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行,这也进一步体现了Java语言“编写一次,到处运行”的宗旨。•JDBC向应用程序开发者提供独立于数据库的、统一的API,当应用程序被移植到不同的平台或数据库系统,应用程序不变,改变的是驱动程序,驱动程序扮演了多层数据库设计中的中间层(或中间件)的角色。•JDBC主要完成以下四方面的工作:①加载JDBC驱动程序;②建立与数据库的连接;③使用SQL语句进行数据库操作并处理结果;④关闭相关连接JDBC接口与驱动程序•JDBC主要提供两个层次的接口,分别是面向程序开发人员的JDBCAPI(JDBC应用程序接口)和面向系统底层的JDBCDriveAPI(JDBC驱动程序接口),它们的功能如下图所示。Java应用程序JDBCAPIJDBC驱动程序管理器JDBCDriverAPIJDBC-Net驱动程序JDBC-ODBC驱动程序ODBCDriver驱动程序A驱动程序BJDBC中间件协议数据库专用访问协议•从图中可看出JDBCAPI所关心的只是Java调用SQL的抽象接口,而不考虑具体使用时采用的是何种方式,具体的数据库调用要靠JDBCDriverAPI(JDBC驱动程序接口)来完成,即JDBCAPI可以与数据库无关,只要提供了JDBCDriverAPI,就可以JDBCAPI访问任意一种数据库,无论它位于本地还是远程服务器。JDBCAPI•JDBCAPI被描述成一组抽象的接口,JDBC的接口和类定义都在包java.sql中,利用这些接口和类可以使应用程序很容易地对某个数据库打开连接、执行SQL语句、并且处理结果。下面对这些接口提供的方法进行详细介绍。1.java.sql.DriverManager接口•java.sql.DriverManager用来装载驱动程序,并为创建新的数据连接提供支持。•JDBC的DriverManager一面向程序提供一个统一的连接数据库的接口;另一方面,它管理JDBC驱动程序,DriverManager类就是这个管理层。下面是DriverManager类提供的主要方法。–getDriver(Stringurl):根据指定url定位一个驱动;–getDrivers():获得当前调用访问的所有加载的JDBC驱动;–getConnection():使用给定的url建立一个数据库连接,并返回一个Connection接口对象;–registerDriver(java.sql.Driverdirver):登记给定的驱动;–setCatalog(Stringdatabase):确定目标数据库。2.java.sql.Connection接口–java.sql.Connection完成对某一指定数据库的连接。–Connection接口用于一个特定的数据库连接,它包含维持该连接的所有信息,并提供关于这个连接的方法。–createStatement():在本连接上生成一个Statement对象,该对象可对本连接的特定数据库发送SQL语句;–setAutoCommit(BooleanautoCommit):设置是否自动提交;–getAutoCommit():获得自动提交状态;–commit():提交数据库上当前的所有待提交的事务;–close():关闭当前的JDBC数据库连接;3.java.sql.Statement接口•java.sql.Statement在一个给定的连接中作为SQL执行声明,它包含了两个重要的子类型java.sql.PreparedStatement(用于执行预编译的SQL声明)和java.sql.CallableStatement(用于执行数据库中的存储过程)。•Statement对象用于将SQL语句发送到数据库中。Statement对象本身并不包含SQL语句,因而必须给查询方法提供SQL语句作为参数。下面是Statement接口声明的主要方法。•executeQuery(Stringsql):执行一条SQL查询语句,返回查询结果对象;•executeUpdate(Stringsql):执行一条SQL插入、更新、删除语句,返回操作影响的行数;•execute(Stringsql):执行一条SQL语句;4.java.sql.ResultSet接口•java.sql.ResultSet用于保存数据库结果集,通常通过执行查询数据库的语句生成。•java.sql.ResultSet对于给定声明获得结果的存取控制。在这些接口中提供了非常丰富的方法,可以使用这种方法对数据库进行各种操作。JDBCDriveAPI•它是面向驱动程序开发的编程接口。根据其运行条件的不同,常见的JDBC驱动程序主要有四种类型,它们分别是:1.JDBC-ODBC桥加ODBC驱动程序(JDBC-ODBCbridgeplusODBCdriver)2.本地API、部分是Java的驱动程序(Native-APIpartly-Javadriver)3.JDBC-Net的纯Java驱动程序(JDBC-NetpureJavadriver)•这种类型的驱动程序将JDBC调用转换成与数据库无关的网络访问协议,利用中间件将客户端连接到不同类型的数据库系统。使用这种驱动程序不需要在客户端安装其他软件,并且能访问多种数据库。这种驱动程序是与平台无关的,并且与用户访问的数据库系统无关,特别适合组建三层的应用模型,这是最为灵活的JDBC驱动程序。•4.本地协议的纯Java驱动程序(Native-protocolpureJavadriver)•这种类型的驱动程序将JDBC调用直接转化为某种特定数据库的专用的网络访问协议,可以直接从客户机来访问数据库系统。这种驱动程序与平台无关,而与特定的数据库有关,这类驱动程序一般由数据库厂商提供。第三、四两类都是纯Java的驱动程序,它们具体Java的所有优点,因此,对于Java开发者来说,它们在性能、可移植性、功能等方面都有优势。(1)JDBC连接池。所谓连接池,就是让一些数据库连接对象在缓冲池中保持打开状态,使得任何请求使用数据库连接的应用都能够立即获得数据库连接,不再需要昂贵的网络开销联系数据库服务器取得连接,连接池会从本地缓冲池中取得空闲的连接赋予发出请求的Java应用。当应用终止数据库连接,数据库连接实际上并未被拆除,而是返回给连接池缓冲区供其他应用重用,从而有效地提升数据库访问性能。(2)数据源(DataSource),是一个由JDBC驱动程序管理的包含数据库连接信息的对象。DataSource与JNDI服务协作,数据库连接的实例化和管理工作都独立于使用它的应用之外。与连接有关的信息,例如路径和端口号,可以在DataSource对象的属性中方便地修改,无需改动使用该数据源的应用代码。publicinterfaceDataSource•作为DriverManager的替代方式,DataSource对象是获取连接的首选方法。实现DataSource接口的对象通常在基于JavaTMNamingandDirectoryInterface(JNDI)API的命名服务中注册。•ConnectiongetConnection()尝试建立与此DataSource对象表示的数据源的连接。•ConnectiongetConnection(Stringusername,Stringpassword)尝试建立与此DataSource对象表示的数据源的连接。?xmlversion=1.0encoding=UTF-8?datasourceslocal-tx-datasource!--jndi-name会绑定在java上下文环境下--!jndi-nameMySql/jndi-nameconnection-urljdbc:mysql://localhost:3306/student?characterEncoding=gbk/connection-urldriver-classcom.mysql.jdbc.Driver/driver-classuser-nameroot/user-namepasswordzzili/password//Mysql-ds.xml例子metadatatype-mappingmySQL/type-mapping/metadata/local-tx-datasourcemin-pool-size5/min-pool-sizemax-pool-size30/max-pool-size/datasourcesJBOSS4环境中数据源的设置(1)把MySQL的JDBC驱动放到/server/default/lib目录从MySql网站上下载MysqlJDBC连接器(2)把/docs/examples/jca/mysql-ds.xml复制到/server/default/deploy目录下。修改mysql-ds.xml文件,设置driver-class/为com.mysql.jdbc.Driver再把connection-url/设置为jdbc:mysql://mysqlhost/database,其中mysqlhost是数据库主机名,database是数据库名。在JBOSS中,由JBOSS服务器生成的数据源对象只能在JBOSS服务器内部使用,因为连接池是在JBOSS服务器内运行JDBC在数据库访问中的应用建立与数据库的连接1、通过DriverManager获得连接publicvoidgetConnection(){try{//Mysql驱动程序为com.mysql.jdbc.DriverClass.forName(com.mysql.jdbc.Driver).newInstance();//数据库URL为jdbc:mysql://[host]:[port]/database,此处localhost为主机,也可以设为数据库主机IP地址//3306为Mysql的默认监听端口号,test为数据库名称,root为数据库用户名,root用户的口令为空。con=java.sql.DriverManager.getConnection(jdbc:mysql://localhost:3306/test,root,);System.out.println(con+con);}catch(Exceptione){e.printStackTrace();}}2、通过数据源获得连接//下面的类是一个获得连接数据库的一个连接。Packagejdbc;publicclassDatabaseConn{//用于获取连接的静态方法publicstaticsynchronizedConnectiongetConnection()throwsException{try{//初始化数据库连接变量Connectionconn=null;//创建一个初始的上下文Propertiesp=newProperties();p.setProperty(“java.naming.factory.initial”,“org.jnp.interfaces.NamingContextFactory”);p.setProperty(“java.naming.provi

1 / 33
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功