Java程序设计-15-访问数据库.ppt
《Java程序设计-15-访问数据库.ppt》由会员分享,可在线阅读,更多相关《Java程序设计-15-访问数据库.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JavaJava程序设计程序设计第第1515章章 访问数据库访问数据库学习目标学习目标了解了解JDBCJDBC发展历史发展历史能够用不同的方式建立到数据库的连接能够用不同的方式建立到数据库的连接利用利用StatementStatement访问数据访问数据能够在对象和数据库的记录之间进行转换,了解能够在对象和数据库的记录之间进行转换,了解ORMORM技术技术掌握批量更新掌握批量更新能够调用存储过程能够调用存储过程了解连接池技术了解连接池技术15.1.1什么是JDBCJDBC(Java Database Connectivity)JDBC(Java Database Connectivity)u一
2、种用于执行一种用于执行SQL SQL 语句语句,和数据库进行交互的技和数据库进行交互的技术,它由一组用术,它由一组用 Java Java 编程语言编写的类和接口编程语言编写的类和接口组成。组成。JDBCJDBC的历史的历史uJDBC1.X API规范遵循的是SQL2/SQL92标准,对它的支持的类都定义在java.sql包中。uJDBC2.0规范发布时,增加了对SQL3的支持,并且重点扩展了在应用服务器端访问数据库的功能,相关扩展的类包含在javax.sql中。u目前JDBC已经发布了4.0的版本,其重要的变化集中在丰富的数据类型、元数据的支持、支持标注和应用服务器端编程的特性如数据源、连接池
3、、分布式的事务等。15.1.2 JDBC 15.1.2 JDBC 驱动程序类型驱动程序类型1.1.JDBC-ODBC JDBC-ODBC 桥加桥加 ODBC ODBC 驱动程序驱动程序u必须提供必须提供ODBCODBC驱动程序驱动程序 2.2.本地本地 API-API-部分用部分用 Java Java 来编写的驱动程序来编写的驱动程序 u一种用一种用JavaJava实现的,替代实现的,替代JDBC-ODBC JDBC-ODBC 桥产品的驱动程序桥产品的驱动程序3.3.JDBC JDBC 网络纯网络纯 Java Java 驱动程序驱动程序u一种和具体数据库无关的驱动程序。一种和具体数据库无关的驱
4、动程序。4.4.本地协议纯本地协议纯 Java Java 驱动程序驱动程序 u一种支持将一种支持将JDBCJDBC调用直接转换为某个具体调用直接转换为某个具体DBMSDBMS的驱动程的驱动程序,通常由数据库厂家提供,实践中常用序,通常由数据库厂家提供,实践中常用15.215.2基本的数据库存取过程基本的数据库存取过程实现简单的数据库存取操作是一件很轻松的事实现简单的数据库存取操作是一件很轻松的事情。实现基本的数据存取操作包括三个步骤:情。实现基本的数据存取操作包括三个步骤:u连接到数据库连接到数据库u存取数据存取数据u关闭连接。关闭连接。连接到数据库连接到数据库u连接到数据库需要由驱动程序的支
5、持,在保证连接到数据库需要由驱动程序的支持,在保证已经将驱动程序文件复制到可被运行环境搜索已经将驱动程序文件复制到可被运行环境搜索到的位置后,开发对数据库进行存取操作的第到的位置后,开发对数据库进行存取操作的第一步是建立到指定数据库的连接,这一过程可一步是建立到指定数据库的连接,这一过程可以细分为两个操作:以细分为两个操作:u加载指定的驱动程序(可选)加载指定的驱动程序(可选)u获得到指定数据库的连接获得到指定数据库的连接publicclassSqlServerDemopublicstaticvoidmain(Stringargs)Stringurl=jdbc:sqlserver:/local
6、host:1433;databaseName=bank;user=sa;password=123456;Connectioncon=null;trycon=DriverManager.getConnection(url);/获得到数据库的连接获得到数据库的连接/获得连接数据库的元数据对象获得连接数据库的元数据对象metaDataDatabaseMetaDatametaData=con.getMetaData();/输出连接数据库的产品名称输出连接数据库的产品名称System.out.println(metaData.getDatabaseProductName();/输出连接数据库的产品版本号
7、输出连接数据库的产品版本号System.out.println(metaData.getDatabaseProductVersion();con.close();/关闭到数据库的连接,释放资源关闭到数据库的连接,释放资源catch(SQLExceptione)e.printStackTrace();1.1.加载驱动程序加载驱动程序(可选可选)u检查数据库厂商提供的检查数据库厂商提供的JDBCJDBC驱动程序,可以在对驱动程序,可以在对应的位置发现其提供的驱动程序类。通过调用方应的位置发现其提供的驱动程序类。通过调用方法法 Class.forName()Class.forName(),将显式地加
8、载驱动程序类。,将显式地加载驱动程序类。加载加载SQLServer驱动程序类驱动程序类Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);加载加载Oracle驱动程序类驱动程序类Class.forName(oracle.thin.Driver);Class.forName(oracle.jdbc.driver.OracleDriver);加载加载MySQL驱动程序类驱动程序类Class.forName(org.gjt.mm.mysql.Driver);2 2 建立连接建立连接u加载加载 Driver Driver 类之后,应用
9、程序还需显式的获得到数类之后,应用程序还需显式的获得到数据库的一个连接。当调用据库的一个连接。当调用 DriverManager.getConnection()DriverManager.getConnection()方法发出连接请求方法发出连接请求时,时,DriverManager DriverManager 将检查每个驱动程序,查看它是将检查每个驱动程序,查看它是否可以建立连接。该方法的返回值类型是否可以建立连接。该方法的返回值类型是ConnectionConnection。表表15-1 15-1 DriverManagerDriverManager方法方法描述描述static void
10、deregisterDriver(Driver driver)static void deregisterDriver(Driver driver)从从 DriverManager DriverManager 的列表中的列表中删删除一除一个个驱动驱动程序程序static Connection getConnection(String url)static Connection getConnection(String url)试图试图建立到建立到给给定数据定数据库库 URL URL 的的连连接接static Connection getConnection(String url,static
11、Connection getConnection(String url,Properties info)Properties info)试图试图建立到建立到给给定数据定数据库库 URL URL 的的连连接接static Connection getConnection(String url,static Connection getConnection(String url,String user,String password)String user,String password)试图试图建立到建立到给给定数据定数据库库 URL URL 的的连连接接static Driver getDri
12、ver(String url)static Driver getDriver(String url)试图查试图查找能理解找能理解给给定定 URL URL 的的驱动驱动程程序序static void setLoginTimeout(int seconds)static void setLoginTimeout(int seconds)设设置置驱动驱动程序程序试图连试图连接到某一数据接到某一数据库库时时将等待的最将等待的最长时间长时间,以秒,以秒为单为单位位连接所需的连接所需的URLURL分析分析jdbc:jdbc:例如:例如:uurl=url=jdbc:microsoft:sqlserver:/
13、localhost:1433;jdbc:microsoft:sqlserver:/localhost:1433;+databasename=score;User=sa;Password=123456databasename=score;User=sa;Password=123456;u这里的这里的subprotocolsubprotocol是是microsoftmicrosoft,除此之外,根,除此之外,根据情况还有据情况还有odbcodbc、oracleoracle、mysqlmysql等。而等。而subnamesubname则指定了数据源。则指定了数据源。ConnectionConnect
14、ion表示了与特定数据库的连接(会话),在连接上表示了与特定数据库的连接(会话),在连接上下文中执行下文中执行 SQL SQL 语句并返回结果。语句并返回结果。表15-2 Connection方法描述void void close()()void void commit()()Statement createStatement()Statement createStatement()CallableStatement prepareCall(String sql)CallableStatement prepareCall(String sql)PreparedStatement prepare
15、Statement(String sql)PreparedStatement prepareStatement(String sql)void void rollback()()void rollback(Savepoint savepoint)void rollback(Savepoint savepoint)void setAutoCommit(boolean autoCommit)void setAutoCommit(boolean autoCommit)Savepoint setSavepoint()Savepoint setSavepoint()void setTransaction
16、Isolation(int level)void setTransactionIsolation(int level)15.315.3使用使用StatementStatement访问数据库访问数据库StatementStatement对象用于将对象用于将 SQL SQL 语句发送到数据库系统中。实语句发送到数据库系统中。实际上有三种际上有三种 Statement Statement 对象,它们都作为在给定连接上对象,它们都作为在给定连接上执行执行 SQL SQL 语句的包容器:语句的包容器:uStatementStatementuPreparedStatementPreparedStateme
17、nt(继承(继承 StatementStatement)uCallableStatementCallableStatement(继承(继承PreparedStatementPreparedStatement)它们都专用于发送特定类型的它们都专用于发送特定类型的 SQL SQL 语句:语句:uStatement Statement 对象用于执行不带参数的简单对象用于执行不带参数的简单 SQL SQL 语句;语句;uPreparedStatement PreparedStatement 对象用于执行带或不带对象用于执行带或不带 IN IN 参数的预参数的预编译编译 SQL SQL 语句;语句;uC
18、allableStatement CallableStatement 对象用于执行对数据库已存储过程的对象用于执行对数据库已存储过程的调用。调用。表表12-4 Statement的主要方法的主要方法void addBatch(String sql)void addBatch(String sql)将将给给定的定的 SQL SQL 命令添加到此命令添加到此 Statement Statement 对对象的当前命令象的当前命令列表中。列表中。void clearBatch()void clearBatch()清空此清空此 StatementStatement 对对象的当前象的当前 SQL 命令列表
19、。命令列表。void closeclose()立即立即释释放此放此 Statement Statement 对对象的数据象的数据库库和和 JDBC JDBC 资资源,而源,而不是等待不是等待该对该对象自象自动动关关闭时发闭时发生此操作。生此操作。boolean execute(String sql)boolean execute(String sql)执执行行给给定的定的 SQL 语语句,句,该语该语句可能返回多个句可能返回多个结结果。果。ResultSet executeQuery(String sql)ResultSet executeQuery(String sql)执执行行给给定的定的
20、 SQL 语语句,句,该语该语句返回句返回单单个个 ResultSetResultSet 对对象。象。int executeBatch()int executeBatch()将一批命令提交将一批命令提交给给数据数据库库来来执执行,如果全部命令行,如果全部命令执执行成功,行成功,则则返回更新返回更新计计数数组组成的数成的数组组。int executeUpdate(String sql)int executeUpdate(String sql)行行给给定定 SQL 语语句,句,该语该语句可能句可能为为 INSERTINSERT、UPDATEUPDATE 或或 DELETEDELETE 语语句,或者
21、不返回任何内容的句,或者不返回任何内容的 SQL 语语句(如句(如 SQL DDL 语语句)。句)。Connection getConnection()Connection getConnection()检检索生成此索生成此 StatementStatement 对对象的象的 ConnectionConnection 对对象。象。ResultSet getResultSet()ResultSet getResultSet()以以 ResultSetResultSet 对对象的形式象的形式检检索当前索当前结结果。果。void setMaxRows(int max)void setMaxRows(
22、int max)将任何将任何 ResultSet 对对象都可以包含的最大行数限制象都可以包含的最大行数限制设设置置为为给给定数。如果超定数。如果超过过了了该该限制,限制,则则安静地撤消多出的行。安静地撤消多出的行。1 1 创建创建 Statement Statement 对象对象 u建立了到特定数据库的连接之后,要想用该连建立了到特定数据库的连接之后,要想用该连接发送接发送 SQL SQL 语句,首先需要创建一个语句,首先需要创建一个Statement Statement 对象,可用对象,可用 Connection Connection 的方法的方法 createStatement creat
23、eStatement 创建。创建。uStatement stmt=con.createStatement();Statement stmt=con.createStatement();2 2 使用使用 Statement Statement 对象执行语句对象执行语句uResultSet rs=stmt.executeQuery(select sid,ResultSet rs=stmt.executeQuery(select sid,name,gender from student);name,gender from student);Statement Statement 接口提供了四种执行接
24、口提供了四种执行 SQL SQL 语句的方法。语句的方法。u方法方法addBatchaddBatch和和executeBatchexecuteBatch结合起来使用,执行命令结合起来使用,执行命令的顺序以添加到批中的顺序为主。的顺序以添加到批中的顺序为主。u方法方法 executeQuery executeQuery 用于产生单个结果集的语句,例如用于产生单个结果集的语句,例如 SELECT SELECT 语句。语句。u方法方法 executeUpdate executeUpdate 用于执行用于执行 INSERTINSERT、UPDATE UPDATE 或或 DELETE DELETE 语句
25、以及语句以及 SQL DDLSQL DDL(数据定义语言)语句。(数据定义语言)语句。u方法方法 execute execute 用于执行返回多个结果集、多个更新计用于执行返回多个结果集、多个更新计数或二者组合的语句。数或二者组合的语句。ResultSetrs=null;rs=stmt.executeQuery(selectsid,name,genderfromstudent);3 3 语句完成语句完成 u当连接处于自动提交模式时,其中所执行的语句在完成时将自动提交或还原。语句在已执行且所有结果返回时,即认为已完成。对于返回一个结果集的 executeQuery 方法,在检索完 ResultS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 15 访问 数据库
限制150内