基于问题解决的JDBC教学方法改革和探讨

2019-01-07 06:18杨廷发兰全祥
赤峰学院学报·自然科学版 2018年12期
关键词:语句数据库教学方法

杨廷发,兰全祥

(攀枝花学院,四川 攀枝花 617000)

1 前言

JDBC(Java DataBase Connectivity,Java数据库连接)是Java的重要组成部分,也是Java程序访问数据库的主要方式[1].在系统开发中,不论是B/S还是C/S的系统都要进行数据库连接,JDBC可以实现系统和不同数据库之间的连接,是Java程序设计课程重点讲解的内容之一.但现有的JDBC教学主要采用的是认知主义学习理论(理论教学)和行为主义学习理论(实践教学),学生在学习过程中大多处于被动学习状态,学习效果较差.基于问题解决的教学方法根据《华盛顿协议》关于复杂工程问题特征的界定、解决复杂工程问题能力的要求以及工程实践对高等工程教育人才培养提出的要求对学生复杂工程问题解决能力进行培养[2].基于问题解决的教学方法将理论学习、实践操作有机地结合在一起,采用问题驱动的方式将知识融入实际工程应用当中,有利于从根本上理解问题、解决问题,培养学生的创新意识,促进学生问题意识的培养,探索精神和创新能力的形成.另外,以基于问题解决的教学方法来构建JDBC的知识体系,有助于学生对Java企业级开发框架的理解,如Hibernate、MyBatis等.

2 JDBC教学内容及重点

通过对部分高校的课程教学大纲以及一些在线课程的了解,大部分高校和在线课程均会讲解JDBC的概念、JDBC的重要接口、JDBC的开发步骤等,少部分课程在讲解JDBC的时候会提及到数据库优化(如数据库连接池、DAO、配置文件、数据库工具类等).

2.1 JDBC的概念及结构

在JDBC的概念部分,重点讲解JDBC是一些用Java语言编写的类和接口的集合,是进行数据库操作的Java API,是Java程序访问数据库的一种规范,强调JDBC作为数据库操作接口的作用.

在讲解JDBC的结构部分时,则应突出JDBC的分层结构,使学生对JDBC的结构有清晰、明确的认识,为后续知识讲解奠定基础.JDBC的结构如图1所示.

图1 JDBC结构

2.2 JDBC API

JDBC API是JDBC知识的核心,只有对API中的方法和作用有较为清晰的认识和学习,学生才能进行Java数据库开发.在JDBC API讲解时,应重点讲授 DriverManager、Connection、Statement、PreparedStatement、ResultSet等类和接口,同时对这些类和接口中的常用方法进行讲解.

2.2.1 DriverManager

DriverManager主要是用于管理已加载的驱动程序,如各种数据库的驱动程序.在讲解Driver-Manager类时应强调到此类是JDBC开发的前序步骤,并重点讲解Class.forName()方法和DriverManager.getConnection()方法.

在方法的讲解中应强调Class.forName()利用了Java的反射机制,在进行驱动注册的时候将抛出ClassNotFoundException 异常;getConnection()方法是DriverManager类的静态方法,可通过类名直接调用,在获得连接的时候可能会SQLException异常.

2.2.2 Connection

Connection表示一个和数据库的连接,在Connection接口中可以创建用于执行SQL语句的命令对象.在讲解Connection接口时应强调此接口用于创建命令对象的方法,如创建Statement、Prepared-Statement、CallableStatement命令对象,并讲解 close()方法.在讲解close()方法的时候应注意训练学生“有借有还”的习惯,使用了资源一定要释放.

2.2.3 Statement

Statement用于执行静态SQL语句并返回其执行结果.在讲解Statement接口时,应重点讲解Statement执行SQL语句的方法,强调不同的SQL语句要选用不同的执行方法.接口中executeQuery()方法主要用于执行查询类SQL语句,其返回类型为结果集ResultSet;executeUpdate()方法主要用于执行更新类SQL语句,其返回类型为整型.

2.2.4 PreparedStatement

PreparedStatement表示预编译的命令对象.在讲解过程中应强调PreparedStatement接口与Statement接口的区别,包括它们的优缺点、使用区别以及适用情况.重点讲解PreparedStatement接口的易读性、高效性、安全性.

Statement命令对象在执行带参数的SQL语句时容易留下SQL注入式攻击的隐患,Prepared-Statement能够有效防止该攻击手段,因此为了进一步结合工程应用实践,可以适当讲解部分网络安全知识.

2.2.5 ResultSet

ResultSet用于表示执行查询语句后得到的结果.在讲解ResultSet()接口的时候,应重点讲解如何遍历结果集,如何将查询的数据转化为Java集合.在讲解此部分时可利用图示的方式加深学生对于结果集处理的印象.

2.3 JDBC开发步骤

了解并学会JDBC的开发步骤有助于学生快速、准确地进行Java数据库开发.在JDBC开发步骤的讲解过程中,一般将开发步骤分为注册驱动并建立连接、发送命令并处理结果以及释放资源三个步骤.

在JDBC开发步骤的教学中应重点讲解JDBC每个步骤之间的联系,加深学生对于开发步骤的印象,并强调最后应当对所有资源进行释放.

2.4 JDBC优化

JDBC优化部分作为JDBC的进阶学习,有助于培养学生对于复杂工程问题的解决能力[3].JDBC的优化部分可以讲解数据库连接池、数据库配置信息读取、封装数据库工具类、DAO、工厂设计模式等内容.

数据库连接池的讲解有助于提高学生对于程序优化的能力;数据库配置信息的读取有助于培养学生“高内聚,低耦合”的编程思维;封装数据库工具类有助于提高学生对程序复用的能力;DAO和设计模式有助于培养学生的模块化设计思维.

3 基于问题解决的教学方法

3.1 教学现状

各高校的Java相关课程体系都将JDBC部分纳入了教学大纲,并要求学生系统地掌握JDBC基础知识,能实现简单的数据库开发,但在实际的教学过程中仍存在一些问题需要解决.

3.1.1 内容过于基础,无法与实际工程问题相结合

由于学时和学生能力水平的限制,以教师为中心的教学法通常只讲解JDBC的基础部分,很少会讲解到实际工程问题的解决,如JDBC优化部分.然而,简单、基础的JDBC知识离实际的工程应用还有很大的差距,容易造成“学”与“用”不能有机结合.

大多数情况下,教学大纲中只要求讲解什么是JDBC,JDBC是用来做什么的,怎么用JDBC进行开发.对原理性知识、本质性问题(如“为什么JDBC可以实现与不同数据库进行连接”,“为什么JDBC是一组类和接口”)等深层次问题并不清楚.也就意味着大部分学生在学习的时候只知道是什么,而不知道为什么.

3.1.3 注重面向过程,忽视整体设计和工程需求

由于传统教学法采用强化学习理论,不注重模块化思想,因此在讲解时将注重JDBC的实现,而忽略JDBC在整个项目中扮演的角色;注重JDBC的实现过程,而忽略项目的整体设计以及架构.这对于培养学生解决复杂工程问题是相当不利的,学生将很难从单一问题解决能力转变为复杂问题解决的能力.

3.1.4 知识构建零散,与后续课程知识分离

在高校的课程设置中,同一系列的课程之间是存在一定联系的.但是在实际教学中,由于师资的不确定性,教学团队之间沟通的不及时性可能造成前后续课程不连贯,知识零散等问题.

JDBC的后续课程包含Java EE、轻量级企业框架开发等,这些课程中涉及到的Hibernate以及MyBatis等框架的设计思想如果能在JDBC课程中有所体现,那对于学生后续课程的学习将有很大的帮助.

3.2 问题解决教学法

基于问题解决的教学法是根据学习内容设计问题,通过解决问题来获得相应的问题图示及相关的概念性理解[4].使用问题解决教学法来讲授JDBC内容需要注意围绕教学内容和教学目标的需要,要满足复杂工程问题的特征需要,同时问题的复杂性和难度要从易到难、循序渐进[5],以问题为导向的JDBC教学运行模型如图2所示.

“十二五”期间,通辽市规划建设800万亩旱涝保收、高产节水农田,500万亩饲草料基地,100万亩设施农业,100万亩特色种植业基地,500万亩退耕还林还草工程,2000万头只牲畜养殖业基地,实施百亿斤粮食加工转化工程,1000个嘎查村的新农村、新牧区建设工程,每年转移农村牧区人口10万人,压减3万眼机电井。

图2 以问题为导向的JDBC教学运行模型

根据文献[6]可以将问题分为引导性问题、分析性问题、开放性问题,学生在解决这些问题之后分别能达到理解和掌握、应用于实践、解决工程问题的能力层级.因此,在JDBC的教学中,可以将JDBC知识划分到不同层级,并采用不同的问题设计,如表1所示.

表1 JDBC教学问题分层设计

3.3 方案实施

基于问题解决的JDBC教学方案实施可大致分为分工职责的确定、具体问题的设计和方案实施.

3.3.1 分工职责

基于问题解决的教学方法主要是以学生为中心进行教学.教师主要负责设计问题、方向引导、技术指导和知识总结等,学生主要任务是根据教师设计的问题进行问题分析、找到问题的解决思路,并在教师的引导和技术指导下对解决方案进行优化和开发实现.教学方案中的分工职责如图3所示.

图3 教学方案中的分工与职责

基于问题解决的JDBC教学方法各环节具体实施内容如下:

①教师设计并给出需要解决的问题,学生分析教师给出的问题并设计解决方案;②教师在学生提出解决方案时提供方向引导,指导学生进行方案优化;③在对最终方案进行实现时,教师应提供相应的技术指导,如数据库连接池的实现、properties属性文件的读取以及DAO等设计模式的实现等;④通过具体实现解决了教师给出的问题后,教师应总结开发中所用到的知识,帮助学生对知识进行固化.

3.3.2 具体问题设计及实施

按照JDBC知识体系及问题分层模型,从教师视角对问题设计、方向引导、技术指导及知识总结四个部分进行探讨.

①JDBC概念.问题设计:Java程序员在开发程序的时候肯定希望自己的方法能适用于不同的数据库,不用重新学习新的数据库连接方法,那么有什么办法能够办到?

方向引导:在Java中若想实现某一标准或规范,可以考虑使用接口.接口的本质就是一种标准.

技术指导:无(理论学习)

知识总结:JDBC本质上是一组Java的类和接口,用于提供一种访问数据库的规范.

②JDBC API.为了达到较为良好的教学效果,建议将强化理论学习转化为构建主义学习.因此,在讲解JDBC API时可以与JDBC开发步骤相结合,不单独设计问题.

③JDBC开发步骤.问题设计:引用小品台词“将大象装进冰箱总共需要几步?”,将经典台词融入到JDBC开发步骤中.

方向引导:教师在做方向引导时应注意培养学生知识迁移的能力,将SQL语句发送给数据库比作“将大象装进冰箱”,进而引导学生学习数据库操作的三个重要步骤:注册驱动并创建连接、创建并执行命令和释放资源三步.

技术指导:将JDBC API中的常用方法融入开发步骤中,详细讲解注册驱动、创建连接、创建命令、执行命令、处理结果和释放资源的技术实现.

知识总结:Java反射机制、DriverManager类、Connection 接口、Statement接口、PreparedStatement接口以及ResultSet接口等知识.

④JDBC优化.JDBC的优化实际上是一系列的问题,在此部分可以使用问题迭代进行讲解,讲授的内容可以包含数据库连接池、数据库配置文件、封装数据库工具类、DAO、设计模式等.

问题设计:每次进行数据库操作都需要创建连接并释放,降低了操作效率,如何解决?将数据库配置信息写入代码中,如果需要修改配置信息,则需重新编译项目,不利于维护,如何解决?在协同项目开发中,我们如何确保开发人员对数据库操作防范的一致性?如何增加程序的可维护性、可扩展性?

方向引导:引导学生学习数据库连接池、数据库配置文件、封装数据库工具类、DAO、设计模式等开发技术.

技术指导:教师根据实际情况进行指导.

知识总结:Java集合、properties属性类、Java反射机制、函数重载和覆写、接口、泛型编程以及序列化等知识.

4 问题教学法的优点

基于问题解决的JDBC教学方法是以学生为中心的教学方法,通过构建主义学习模式和研究型教学方法,将JDBC知识有机地整合在一起,增加了教学效果,提升了学生学习效率.除此之外,基于问题解决的JDBC教学方法可提高学生的积极性,促使学生主动学习JDBC的相关知识;当学生设计的问题解决方案被采用并实现时,学生将获得成就感;在JDBC开发步骤中,通过知识迁移把案例“将大象装进冰箱”比作实际的JDBC开发,能帮助学生掌握JDBC的开发步骤;采用螺旋式问题设计方式,由浅入深逐步完善JDBC的知识体系;通过与实际工程问题相关联,减小课程学习与实际工程应用的差距;在JDBC优化部分,通过问题驱动可以将大量的程序设计思维传授给学生,为后期Java EE企业级开发框架的学习奠定基础.

5 总结

基于问题解决的JDBC教学方法将认知主义、行为主义、构建主义学习理论有机地结合在一起,有利于提高学生解决问题和后续自主研发的能力.通过设计问题、方案设计和优化、技术实现和知识总结固化将JDBC知识融入实际工程应用中,不仅能提高学生的学习效率和学习效果,还能为后续Java EE企业级开发框架的学习、模块化程序设计思维的培养奠定基础.

猜你喜欢
语句数据库教学方法
初中英语写作教学方法初探
重点:语句衔接
教学方法与知识类型的适宜
数据库
数据库
数据库
数据库
初中数学教师不可忽视的几种教学方法
如何搞定语句衔接题
作文语句实录