ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:157.99KB ,
资源ID:11866014      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11866014.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(28JAVA与数据库2JDBC详解.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

28JAVA与数据库2JDBC详解.docx

1、28JAVA与数据库2JDBC详解java程序设计讲义JAVA与数据库2、JDBC详解教学重点Statement及其子接口的区别Statement的常用方法。SQL注入的漏洞演示PreparedStatement的优点,占位符及运行原理。PreparedStatement的常用方法。Properties配置文件的使用方法。教学难点数据库性能和安全意识,SQL注入,占位符,事务和批处理教学目标掌握Statement的接口及其子类 PreparedStatement CallableStatement熟练掌握常用的Statement的方法熟练PreparedStatement的使用熟悉SQL注入概

2、念 掌握MySQL的数据类型与JAVA数据类型的对应掌握批处理及事务的概念1、JDBC简介复习 时间: 10分钟 教学方法:提问1)、JDBC的概念及意义是什么?2)、JDBC是谁提供的?它是由一组接口和类组成的,常用的接口和类有哪些?3)、MySQL的驱动包是谁提供的?这个驱动包的内容是什么?4)、JAVA通过JDBC连接数据库的步骤有那几步? 引入MySQL的驱动包5.1.37 建立一个DBUtil工具类,用来提供驱动注册、获取数据库连接、释放资源的操作 通过DBUtil的getConnection方法获得数据库连接conn 通过conn获得一个Statement对象,用来发送SQL给数据

3、库服务器 如果是select操作,通过ResultSet处理结果集 通过DBUtil的release释放资源5)、资源释放的顺序是什么?2、Statement详解 时间: 15分钟教学方法:实际操作分析,讨论,解释1)、Statement接口Statement接口只能用来执行静态SQL,即不带参数的的SQL,获得Statement的方法有以下几种:返回Statement的java.sql中的方法StatementConnection.createStatement()创建一个Statement对象来将 SQL 语句发送到数据库。StatementConnection.createStateme

4、nt(intresultSetType, intresultSetConcurrency)创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象。StatementConnection.createStatement(intresultSetType, intresultSetConcurrency, intresultSetHoldability)创建一个Statement对象,该对象将生成具有给定类型、并发性和可保存性的ResultSet对象。StatementResultSet.getStatement()获取生成此ResultSet对象的Stateme

5、nt对象。Statement的发送SQL语句给数据库的方式分为:executeQuery、executeUpdate课堂实例:完成jdbcDemo工程中的StudentDAO接口设计增加一条student数据删除一条student数据修改一条student数据查询数据库中的全部数据查询数据库中学生人数2)、SQL注入例如,在数据库中给student表增加一个password属性模拟登录操作控制台提示用户输入学号,等待用户输入控制台提示用户输入密码,等待用户输入系统获取学号和密码,判断登录是否成功将登录结果显示在控制台上public class SQLInjoin public static v

6、oid main(String args) Connection conn = DBUtil.getConnection(); Statement stmt = null; ResultSet rs = null; String sno = ; String password = ; Scanner sc = new Scanner(System.in); System.out.println(请输入学号); sno = sc.nextLine(); System.out.println(请输入密码); password = sc.nextLine(); try stmt = conn.cre

7、ateStatement(); String sql = select * from student where sno = + sno + and password = + password+; System.out.println(sql); rs = stmt.executeQuery(sql); if(rs.next() System.out.println(登录成功); else System.out.println(登录失败); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();

8、 finally DBUtil.release(rs, stmt, conn); 3)、PreparedStatement接口ResultSetexecuteQuery()在此PreparedStatement对象中执行 SQL 查询,并返回该查询生成的ResultSet对象。intexecuteUpdate()在此PreparedStatement对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如INSERT、UPDATE或DELETE语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。课堂示例:

9、如何使用PreparedStatement完成增删改查。3、存储过程 时间: 15分钟教学方法:实际操作分析,讨论,解释存储过程的调用: 存储过程是一种特殊的 SQL 语句,用于对数据库进行操作。存储过程放在数据库中,它可以把复杂的查询与客户端隔离,而只给客户提供必要的查询接口。使用存储过程的好处是性能好,他在服务器上执行,离数据最接近,比直接发送 SQL 语句速度要快得多。 存储过程的好处: 1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。 2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信

10、量,提高通信速率。 3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。public class CallProcedure /* * param args */ public static void main(String args) Connection conn = null; Statement stmt = null; try / 动态导入数据库的驱动 Class.forName(com.mysql.jdbc.Driver); / 获取数据库链接 conn = DriverManager.getConnection( jdbc:mysql:/local

11、host:3306/stu, root, root); / 创造调用存储过程的SQL String sql = CALL test_procedure(); / 执行调用存储过程的SQL语句 stmt = conn.prepareCall(sql); stmt.execute(sql); System.out.println(OK!); catch (Exception e) e.printStackTrace(); finally / 关闭Statement try stmt.close(); catch (Exception e) / 关闭Connection try conn.close

12、(); catch (Exception e) 4、ResultSet结果集与MySQL数据类型 时间: 15分钟教学方法:实际操作分析,讨论,解释BIT(1) (new in MySQL-5.0)BITjava.lang.BooleanBIT( 1) (new in MySQL-5.0)BITbyteTINYINTTINYINTjava.lang.Boolean if the configuration property tinyInt1isBit is set to true (the default) and the storage size is 1, or java.lang.Int

13、eger if not.BOOL, BOOLEANTINYINTSee TINYINT, above as these are aliases for TINYINT(1), currently.SMALLINT(M) UNSIGNEDSMALLINT UNSIGNEDjava.lang.Integer (regardless if UNSIGNED or not)MEDIUMINT(M) UNSIGNEDMEDIUMINT UNSIGNEDjava.lang.Integer, if UNSIGNED java.lang.Long (C/J 3.1 and earlier), or java.

14、lang.Integer for C/J 5.0 and laterINT,INTEGER(M) UNSIGNEDINTEGER UNSIGNEDjava.lang.Integer, if UNSIGNED java.lang.LongBIGINT(M) UNSIGNEDBIGINT UNSIGNEDjava.lang.Long, if UNSIGNED java.math.BigIntegerFLOAT(M,D)FLOATjava.lang.FloatDOUBLE(M,B)DOUBLEjava.lang.DoubleDECIMAL(M,D)DECIMALjava.math.BigDecima

15、lDATEDATEjava.sql.DateDATETIMEDATETIMEjava.sql.TimestampTIMESTAMP(M)TIMESTAMPjava.sql.TimestampTIMETIMEjava.sql.TimeYEAR(2|4)YEARIf yearIsDateType configuration property is set to false, then the returned object type is java.sql.Short. If set to true (the default) then an object of type java.sql.Dat

16、e (with the date set to January 1st, at midnight).CHAR(M)CHARjava.lang.String (unless the character set for the column is BINARY, then byte is returned.VARCHAR(M) BINARYVARCHARjava.lang.String (unless the character set for the column is BINARY, then byte is returned.BINARY(M)BINARYbyteVARBINARY(M)VA

17、RBINARYbyteTINYBLOBTINYBLOBbyteTINYTEXTVARCHARjava.lang.StringBLOBBLOBbyteTEXTVARCHARjava.lang.StringMEDIUMBLOBMEDIUMBLOBbyteMEDIUMTEXTVARCHARjava.lang.StringLONGBLOBLONGBLOBbyteLONGTEXTVARCHARjava.lang.StringENUM(value1,value2,.)CHARjava.lang.StringSET(value1,value2,.)CHARjava.lang.String5、批处理Batch

18、 时间: 15分钟教学方法:实际操作分析,讨论,解释批处理与非批处理分别插入2万条记录的性能比:6、事务概念及处理 时间: 15分钟教学方法:实际操作分析,讨论,解释1)、什么是事务public class RunInsert /* * param args */ public static void main(String args) Connection conn = null; Statement stmt = null; try / 动态导入数据库的驱动 Class.forName(com.mysql.jdbc.Driver); / 获取数据库链接 conn = DriverManag

19、er.getConnection( jdbc:mysql:/localhost:3306/jdbc_teaching, root, ); / 开启事务 conn.setAutoCommit(false); / 创造SQL语句 String sql = INSERT INTO user_list ( user_name, user_password )VALUES ( Eric, 123 ); / 执行SQL语句 stmt = conn.createStatement(); stmt.executeUpdate(sql); / 提交事务 mit(); System.out.println(OK!

20、); catch (Exception e) e.printStackTrace(); / 回滚事务 try conn.rollback(); catch (Exception e2) finally / 关闭Statement事务与批处理的混合使用,实际上不就是事务么?public class RunInsertBench public static void main(String args) Connection conn = null; Statement stmt = null; try / 动态导入数据库的驱动 Class.forName(com.mysql.jdbc.Driver

21、); / 获取数据库链接 conn = DriverManager.getConnection( jdbc:mysql:/localhost:3306/jdbc_teaching, root, ); / 开启事务 conn.setAutoCommit(false); / 创造执行SQL语句的环境 stmt = conn.createStatement(); / 添加处理进当前批次 stmt.addBatch(INSERT INTO user_list ( user_name,user_password ) VALUES (Name789, 234); stmt.addBatch(INSERT

22、INTO user_list ( user_name,user_password ) VALUES (Name567, 234); / 执行当前批次 stmt.executeBatch(); / 提交事务 mit(); System.out.println(OK!); catch (Exception e) e.printStackTrace(); / 回滚事务 try conn.rollback(); catch (Exception e2) finally / 关闭Statement try stmt.close(); catch (Exception e) / 关闭Connection try conn.close(); catch (Exception e) 7、properties配置文件 时间: 15分钟教学方法:实际操作分析,讨论,解释1、properties文件url=jdbc:mysql:/202.196.38.108:3306/stuuserName=rootpasswd=rootdriverName=com.mysql.jdbc.Driver2、DBUtil工具类

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1