JDBC教学ppt课件Java程序设计案例教程.pptx
《JDBC教学ppt课件Java程序设计案例教程.pptx》由会员分享,可在线阅读,更多相关《JDBC教学ppt课件Java程序设计案例教程.pptx(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JDBC 教学课件Java程序设计案例教程8.1 什么是JDBCJDBC的全称是Java数据库连接(JavaDatabaseConnectivity),它是一套用于执行SQL语句的JavaAPI。我们的应用程序可通过这套API连接到关系型数据库,并使用这套API来执行相关的SQL语句完成对数据库中数据的新增、删除、修改和查询等操作。简单来说,就是借助于Java提供的这套API(即JDBC)来实现对关系型数据库的相关操作。8.1 什么是JDBC但是,这里要注意的是,Java给我们提供的这套操作关系型数据库所对应的API仅仅是一套接口,或者说是一些抽象类,Java并没有提供一些具体的类来操作关系型
2、数据库,那Java为什么没有提供具体的类来操作关系型数据库呢?8.1 什么是JDBC不同的数据库(如MySQL、Oracle等)底层实现细节以及内部的数据处理方式是不同的,如果Java提供具体的类来操作关系型数据库,此时,它就需要针对每一种关系型数据库来提供具体的类(比如MySQL、Oracle分别提供具体的类),那么就会出现两个问题,第一,对于开发人员来说,开发成本大大增加了,因为Java需要对每一种关系型数据库提供具体的类。第二,对于使用者来说,后期的维护成本提高了。假设项目刚开始使用MySQL数据库,此时就需要借助于MySQL所对应的具体API来操作,后期如果底层数据库改成了Oracle
3、,此时就需要修改代码,使用Oracle所对应的具体API来操作,即随着底层数据库的变更,我们需要频繁地修改相关代码,这样就使维护成本增高了。8.1 什么是JDBC因此,基于上述两点,Java提供操作数据库的这套API就不是具体的类,而是一套接口。后期开发人员在进行开发的时候只需要面向这一套接口编程(即JDBC)就行了。那么仅有接口能实现数据库的相关操作吗?答案是肯定不行,因为接口的方法都是抽象方法,没有具体的方法体。所以要操作这些数据库,还必须有接口所对应的实现类。因为数据库厂商非常清楚自己数据库的细节及处理方式,所以这个接口所对应的实现类是由数据库厂商开发的,我们将这些实现类称为数据库驱动。
4、这样,即使后期数据库发生变更,我们只需要更改数据库驱动就可以,程序代码不需要更改。8.1 什么是JDBC应用程序使用JDBC访问数据库的方式如下图。8.1 什么是JDBC由上图可以看出,JDBC起到应用程序和底层数据库的桥梁的作用。JDBC要求各个数据库厂商按照统一的规范提供数据库驱动程序,在程序中由JDBC与具体的数据库驱动联系,因此,用户就不必直接与底层的数据库交互,使代码的通用性更强。即当应用程序使用JDBC访问特定的数据库时,需要通过不同数据库驱动与不同数据库连接,连接后就可对数据库进行相应操作。8.2 JDBC常用API在开发JDBC程序前,先了解一下JDBC常用的API。JDBCA
5、PI主要位于java.sql包中,该包定义了一系列访问数据库的接口和类。8.2.1 Driver接口Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中(这里指MySQL驱动JAR包)。8.2.2 DriverManager 接口DriverManager接口用于加载JDBC驱动、创建与数据库的连接。在DriverManager接口中,定义了两个比较重要的静态方法,见下表。方法名称方法名称功能描述功能描述staticvoidregisterDriver(Dr
6、iverdriver)用于向DriverManager注册给定的JDBC驱动程序staticConnectiongetConnection(Stringurl,Stringuser,Stringpwd)用于建立和数据库的连接,并返回表示连接的Connection对象8.2.3 Connection接口Connection接口用于处理与特定数据库的连接,Connection对象是表示数据库连接的对象,只有获得该连接对象,才能访问并操作数据库。Connection接口的常用方法如下表。方法名称方法名称功能描述功能描述StatementcreateStatement()用于创建一个Statement
7、对象将SQL语句发送到数据库PreparedStatementprepareStatement(Stringsql)用于创建一个PreparedStatement对象将参数化的SQL语句发送到数据库CallableStatementprepareCall(Stringsql)用于创建一个CallableStatement对象来调用数据库存储过程8.2.4 Statement接口Statement接口用于执行静态的SQL语句,并返回一个结果对象。Statement接口对象可以通过Connection实例的createStatement()方法获得,该对象会把静态的SQL语句发送到数据库中编译执行
8、,然后返回数据库的处理结果。Statement接口提供了3个常用的执行SQL语句的方法。方法名称方法名称功能描述功能描述booleanexecute(Stringsql)用于执行各种SQL语句。该方法返回一个boolean类型的值,如果为true,表示所执行的SQL语句有查询结果,可以通过Statement的getResultSet()方法获得查询结果。intexecuteUpdate(Stringsql)用于执行SQL中的insert、update和delete语句。该方法返回一个int类型的值,表示数据库中受该SQL语句影响的记录条数。ResultSet executeQuery(Stri
9、ngsql)用于执行SQL中的select语句。该方法返回一个表示查询结果的ResultSet对象。8.2.4 Statement接口注意,Statement接口要求执行静态的SQL语句。SQL语句就是在程序里面已经把SQL语句拼接好了,后期对于数据库而言,这个SQL语句就是固定的,具体事例如下:8.2.4 Statement接口8.2.5 PreparedStatement 接口Statement接口封装了JDBC执行SQL语句的方法,可以完成Java程序执行SQL语句的操作。然而在实际开发过程中往往需要将程序中的变量作为SQL语句的查询条件,而使用Statement接口操作这些SQL语句会
10、过于繁琐,并且存在安全方面的问题。针对这一问题,JDBCAPI提供了扩展的PreparedStatement接口。PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。PreparedStatement接口扩展了带有参数SQL语句的执行操作,该接口中的SQL语句可以使用占位符“?”代替参数,然后通过setter()方法为SQL语句的参数赋值。8.2.5 PreparedStatement 接口PreparedStatement接口提供了一些常用方法,如下表。方法名称方法名称功能描述功能描述intexecuteUpdate()在PreparedStateme
11、nt对象中执行 SQL 语句,SQL语句必须是一个DML语句或者是无返回内容的SQL 语句,如 DDL 语句。ResultSetexecuteQuery()在PreparedStatement对象中执行 SQL 查询,该方法返回的是ResultSet对象。voidsetInt(intparameterIndex,intx)将指定参数设置成给定的int值。voidsetString(intparameterIndex,Stringx)将指定参数设置成给定的String值。8.2.5 PreparedStatement 接口通过setter()方法为SQL语句中的参数赋值时,可以通过已定义的SQL
12、类型参数兼容输入参数。例如,如果参数具有的SQL类型为Integer,那么应该使用setInt()方法或setObject()方法设置多种类型的输入参数,具体示例如下所示:8.2.5 PreparedStatement 接口8.2.6 ResultSet接口ResultSet接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。在ResultSet接口内部有一个指向表格数据行的游标(或指针),ResultSet对象初始化时,游标在表格的第一行之前,调用next()方法可以将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序中经常使用next()方法作为whi
13、le循环的条件来迭代ResultSet结果集。ResultSet接口的常用方法如下表。方法名称方法名称功能描述功能描述StringgetString(intcolumnIndex)用 于 获 取 指 定 字 段 的 String类 型 的 值,参 数columnIndex代表字段的索引。StringgetString(StringcolumnName)用 于 获 取 指 定 字 段 的 String类 型 的 值,参 数columnName代表字段的名称。intgetInt(intcolumnIndex)用于获取指定字段的int类型的值,参数columnIndex代表字段的索引。intgetI
14、nt(StringcolumnName)用于获取指定字段的int类型的值,参数columnName代表字段的名称。booleannext()将游标从当前位置向下移一行。8.2.6 ResultSet接口从上个表格中可以看出,ResultSet接口中定义了一些getter方法,而采用哪种getter方法获取数据取决于字段的数据类型。程序既可以通过字段的名称来获取指定数据,也可以通过字段的索引来获取指定的数据,字段的索引是从1开始编号的。例如,数据表的第一列字段名为id,字段类型为int,那么既可以使用getInt(1)获取该列的值,也可以使用getInt(“id”)获取该列的值。8.2.6 Re
15、sultSet接口8.3.1 实现JDBC相关步骤使用JDBC的常用API实现JDBC程序的步骤如下图。接下来分步骤讲解使用JDBC的API连接数据库的过程。1.把数据库所对应的驱动JAR包加载到当前项目的classpath路径下首先,在IntelliJIDEA开发工具中,在当前项目下,新建一个lib文件夹。然后,把数据库驱动包放入文件夹lib中,右击当前驱动包,选择【AddasLibrary】,然后单击【OK】就加载到了classpath路径下。8.3.1 实现JDBC相关步骤2.加载并注册数据库驱动在连接数据库之前,要加载数据库的驱动到JVM(Java虚拟机)。加载操作可以通过java.l
16、ang.Class类的静态方法forName(StringclassName)或DriverManager类的静态方法registerDriver(Driverdriver)实现,具体示例如下所示:DriverManager.registerDriver(Driverdriver);或Class.forName(DriverName);8.3.1 实现JDBC相关步骤在实际开发中,我们常用第2种方式注册数据库驱动,DriverName表示数据库的驱动类。以MySQL数据库为例,MySQL驱动类在6.0.2版本之前为com.mysql.jdbc.Driver,而在6.0.2版本之后为com.my
17、sql.cj.jdbc.Driver,我们要根据自己数据库版本选择对应的驱动类。8.3.1 实现JDBC相关步骤3.通过DriverManager获取数据库连接获取数据库连接的具体方式如下:Connectionconn=DriverManager.getConnection(Stringurl,Stringuser,Stringpwd);从上述代码可以看出,getConnection()方法有3个参数,分别表示连接数据库的地址、登录数据库的用户名和密码。以MySQL数据库为例,MySQL数据库地址的书写格式如下:jdbc:mysql:/hostname:port/databasename8.3
18、.1 实现JDBC相关步骤在上面代码中,jdbc:mysql:是固定的写法,mysql指的是MySQL数据库,hostname指的是主机的名称(如果数据库在本机中,hostname可以为localhost或127.0.0.1;如果要连接的数据库在其他电脑上,hostname为所要连接电脑的IP),port指的是连接数据库的端口号(MySQL端口号默认为3306),databasename指的是MySQL中相应数据库的名称。8.3.1 实现JDBC相关步骤4.通过Connection对象获取Statement对象Connection创建Statement对象的方法有以下3个:createStat
19、ement():创建基本的Statement对象。prepareStatement():创建PreparedStatement对象。prepareCall():创建CallableStatement对象。以创建基本的Statement对象为例,创建方式如下:Statementstmt=conn.createStatement();8.3.1 实现JDBC相关步骤5.使用Statement执行SQL语句所有的Statement都有以下3种执行SQL语句的方法:execute():可以执行任何SQL语句。executeQuery():通常执行查询语句,执行后返回代表结果集的ResultSet对象。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JDBC 教学ppt课件Java程序设计案例教程 教学 ppt 课件 Java 程序设计 案例 教程
限制150内