《JDBC数据库连接》PPT课件.ppt
《《JDBC数据库连接》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《JDBC数据库连接》PPT课件.ppt(29页珍藏版)》请在装配图网上搜索。
JDBC数据库编程,本章内容,1.JDBC的基本概念2.两种常用的数据库连接驱动的加载方式3.JDBC数据库访问的一般步骤4.ConnectionStatementResultSet的具体用法5.事务的手动提交6.常用数据库的基本配置,JDBC(JavaDatabaseConnectivity)是由Sun公司提供的与平台无关的数据库连接标准,目前各大数据库厂商基本都提供JDBC驱动程序,使得Java程序能独立运行于各种数据库之上。,JDBC简介,JDBC在实际项目中的应用,常用的两种JDBC驱动程序,(1)JDBC-ODBC桥接驱动程序适合开发小规模应用,客户端应该有ODBC库。(2)纯Java驱动程序Java写的驱动,直接与数据库沟通,不需要通过中介软件,由数据库制造商提供(大型Java项目中常用此种方式)。,JDBC-ODBC方式(以Access为例),进入”控制面板”,选择“管理工具”,选择“数据源(ODBC)”,选择”系统DSN”。(2)选择”添加”,在”创建新数据源”对话框中选择数据源的驱动程序。(3)选择”MicrosoftAccessDriver(*.mdb)”,单击”完成”。(4)输入”数据源名”,选择数据库文件的存放位置。(5)单击“高级”,设置访问数据源的登录名称和密码,完成数据源的建立。,纯Java驱动方式,(1)根据具体的数据库管理系统,在网上下载具体相对应的jar包。(2)将jar包配置到环境变量中。(Eclipse中需要配置configurebuildpath),数据库编程的一般过程,(1)加载驱动程序1.Class.forName(JDBC驱动名称);例:Class.forName(“sun.jdbc.odbc.JdbcOdbcDrvier”);Class对象描述了运行中的类和接口。每个类都有一个相应的Class对象。每个类的Class对象存储于编译后的.class文件中。所以,当JVM装载一个.class文件时就会装载一个Class对象。所以,一个class只有一个Class对象。,(2)创建数据库连接Connection连接变量=DriverManager.getConnection(数据库URL,用户帐号,密码);DriverManager类是JDBC的管理层,它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。,Connection对象代表了与数据库的一个连接,对数据库的所有操作都直接或间接与Connection对象有关。Connectioncon=DriverManager.getConnection(“jdbc:odbc:myDB”,”li”,”1234”);,Statement对象,createStatement()createStatement(intresultSetType,intresultSetConcurrency)创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象。但它允许重写默认结果集类型和并发性。createStatement(intresultSetType,intresultSetConcurrency,intresultSetHoldability)该对象将生成具有给定类型、并发性和可保存性的ResultSet对象。此方法与上述createStatement方法相同,但它允许重写默认结果集类型、并发性和可保存性。,Statement的主要方法,ResultSetexecuteQuery(Stringsql)intexecuteUpdate(Stringsql)voidclose()注:以上方法都抛出SQLException异常,调用该方法的类要捕获异常,并进行相应的处理操作。,(4)执行SQL操作SQL操作分为两大类:1.数据定义语言(DDL)2.数据操作语言(DML,Select,Update,Delete)DML当中的Select需要用到ResultSet对象。在实际开发当中,DML是用的最多的。DDL在系统架构时,基本已经定义完成了。,ResultSet对象,ResultSet表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。默认的ResultSet对象不可更新,仅有一个向前移动的光标。因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行。可以通过Connection对象的createStatement()方法生成可滚动和/或可更新的ResultSet对象。,ResultSet对象,ResultSet,利用单例模式创建数据库连接类,简单的讲就是一个类只能有一个对象。该模式的特点是:(1)构造方式被声明为private;(2)有一个名为getInstance()的方法来获得该类的实例。(3)有一个私有的、静态的、指向该类的一个引用。在实际项目中,单例模式常用在数据库连接池的管理者。,SQL注入问题,在数据库表中以某个字符字段为查询条件,如果查询条件为or1or,发现会出现什么样的情况?数据库表中字符类型的字段都以开始和结束。如果某条SQL查询语句以字符类型字段作为查询条件,如果处理不好就会造成数据泄露。见源文件:SQL注入问题/QueryInject.java,利用prepareStatement解决SQL注入问题,Stringsql=select*fromStudentwherename=?;PreparedStatementpt=con.prepareStatement(sql);pt.setString(1,userName);ResultSetrs=pt.executeQuery();具体见源文件:PreparedStatement/PreparedStatementDemo.java注意:不要写成ResultSetrs=pt.executeQuery(sql);,PreparedStatement与Statement的区别,1.PreparedStatement是预先编译的语句,而Statement则不是预先编译的,在执行过程中进行语法、语义检查的。2.PrepareStatement中执行的SQL语句中是可以带参数的(能解决SQL注入问题),而Statement不能。3.处理批量SQL语句时,优先使用PrepareStatement。预先编译的语句,就会放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来。,批处理操作,批处理操作是优化数据库效率的一种方法,可将多条SQL操作打成一个包,执行一次,节省网络传输。使用PreparedStatement和Statement都可以实现批处理。PreparedStatement为例:ps.addBatch();ps.executeBatch();见源文件:批处理操作/BatchOperation.java,利用Statement的setFetchSize()方法提高检索效率,voidsetFetchSize(introws)throwsSQLException此方法目的是为了减少网络交互次数;默认情况下,一条查询语句会将所有结果从数据库中取出放入到ResultSet中,在ResultSet中每次遍历一条记录,新记录中的数据都是一次网络交互。设置rows值后,从服务器端一次传递rows条记录到客户端,这rows条记录的访问是在客户端进行的,遍历完后再从服务器端取rows条。具体见源文件SetFetchSize/QueryBySetFetchSize.java,事务(ACID),原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。一致性(consistency):在事务处理执行前后,数据库是一致的(数据库数据完整性约束)。隔离性(isolcation):一个事务处理对另一个事务处理的影响。持续性(durability):事务处理的效果能够被永久保存下来。connection.setAutoCommit(false);/打开事务。mit();/提交事务。connection.rollback();/回滚事务。见源文件:TransactionTest.java,JavaEE中的分布式事务(JTA),跨越多个数据源的事务,使用JTA容器实现事务。分成两阶段提交。javax.transaction.UserTransactiontx=(UserTransaction)ctx.lookup(“jndiName);tx.begin();/connection1connection2(可能来自不同的数据库)mit();/tx.rollback();,数据库的元数据信息,DatabaseMetaData类中包含了数据库的一些基本信息:例如数据库的名称、版本号、驱动版本、是否支持相关操作等。通过数据库的连接获得数据库的元信息。见源文件:元数据/MetaDataTest.java,结果集的元数据信息,利用结果集的元数据信息可以得到结果集中所封装的列的个数、列的数据类型、列的名称等信息。ResultSetMetaDatarsmd=rs.getMetaData();见源文件:元数据/ResultSetMetaDataTest.java,几种常见数据库驱动和建立Connection的写法,(1)JDBC-ODBC方式驱动类:sun.jdbc.odbc.JdbcOdbcDriverURL:jdbc:odbc:DataSourceName(以下方式的写法都是纯Java驱动方式)(2)SQLServer系列数据库驱动类:com.microsoft.jdbc.sqlserver.SQLServerDriver(SQLServer2000系列)com.microsoft.sqlserver.jdbc.SQLServerDriver(SQLServer2005系列)URL:jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=DataBaseName(SQLServer2000系列)jdbc:sqlserver:/localhost:1433;DatabaseName=DataBaseName(SQLServer2005系列),几种常见数据库驱动和建立Connection的写法,(3)MySQL数据库驱动类:com.mysql.jdbc.DriverURL:jdbc:mysql:/localhost:3306/DatabaseName(4)Oracle系列数据库驱动类:oracle.jdbc.driver.OracleDriverURL:jdbc:oracle:thin:localhost:1521:DataBaseName,SQLServer数据库系统JDBC驱动下载,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JDBC数据库连接 JDBC 数据库连接 PPT 课件
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文