版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JDBC数据库连接数据库连接回顾 Java语言中字节流和字符流包含哪些类语言中字节流和字符流包含哪些类,以及区别?以及区别? 异常处理常用的关键字有哪些?异常处理常用的关键字有哪些?理解JDBC原理掌握ResultSet接口的使用掌握PreparedStatement接口的使用本章目标点点重重点点重重掌握Connection接口的使用掌握Statement接口的使用点点重重点点重重为什么需要JDBCJDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力Java应用程序应用程序JDBCJDBCJSP/Servlet客户端客户端数据库服务器数据库服务器应用服务器应用服务器数据库服务器
2、数据库服务器客户端客户端JDBC的工作原理JDBC API 提供者:Sun公司 内容:供程序员调用的接口与类, 集成在java.sql和javax.sql包中如:DriverManager类Connection接口Statement接口ResultSet接口DriverManager 提供者:Sun公司 作用:管理各种不同的JDBC驱动JDBC 驱动 提供者:数据库厂商 作用:负责连接各种不同的数据库SqlServer OracleJDBC API JDBC Driver Manager JDBC 驱动驱动 JDBC 驱动驱动 Java 应用程序应用程序 JDBC APIJDBC API主要功
3、能:与数据库建立连接、执行SQL 语句、处理结果 DriverManager :依据数据库的不同,管理JDBC驱动 Connection :负责连接数据库并担任传送数据的任务 Statement :由 Connection 产生、负责执行SQL语句 ResultSet:负责保存Statement执行后所产生的查询结果ConnectionDriverManagerStatementResultSet客户端客户端数据库数据库 服务器服务器1234try Class.forName(JDBC驱动类驱动类); try Connection con=DriverManager.getConnection
4、(URL,数据库用户名数据库用户名,密码密码); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Table1); while (rs.next() int x = rs.getInt(a); String s = rs.getString(b); float f = rs.getFloat(c); rs.close(); stmt.close(); con.close(); 2、与数据库建立连接、与数据库建立连接 3、发送、发送SQL语句,并得到返回结果语
5、句,并得到返回结果 4 4、处理返回结果、处理返回结果 1、加载、加载JDBC驱动驱动 URLURL用来用来标识数据库标识数据库 5 5、释放资源、释放资源JDBC工作模板 JDBC驱动 使用纯Java方式连接数据库 由JDBC驱动直接访问数据库 优点:100% Java,快又可跨平台 缺点:访问不同的数据库需要下载专用的JDBC驱动oracleproduct10.2.0db_1ouijlibJDBC 驱动驱动 Java 应用程序应用程序 JDBC API DBServerJDBC驱动 Connection conn = null;try Class.forName(oracle.jdbc.d
6、river.OracleDriver); catch (ClassNotFoundException e) try conn = DriverManager.getConnection(jdbc:oracle:thin:localhost:1521:orcl, “scott,“tiger); catch (SQLException e) finally try conn.close(); catch (SQLException e) 演示示例演示示例1 1:使用纯:使用纯Java方式连接并关闭方式连接并关闭关闭连接关闭连接建立连接建立连接加载驱动加载驱动必须进行相关异常处理必须进行相关异常处理
7、 JDBC应用对宠物和主人信息进行管理: 宠物和主人信息存储在Orcal数据库中 通过JDBC对宠物和主人进行增、删、改、查字段名字段说明字段类型其 他id编号编号int主键、自增主键、自增name昵称昵称varchar(12)health健康值健康值intlove亲密度亲密度intstrain品种品种varchar(20)字段名字段说明字段类型其 他id编号编号int主键、自增主键、自增name姓名姓名varchar(12)password密码密码varchar(20)money元宝数元宝数int使用Statement添加宠物 Connection conn = null;Statement
8、 stmt = null; / 建立连接建立连接 stmt = conn.createStatement();StringBuffer sbSql = new StringBuffer(insert into dog (name,health,love,strain) values ( );sbSql.append(name + ,);sbSql.append(health + ,);sbSql.append(love + ,);sbSql.append(strain + );stmt.execute(sbSql.toString();stmt.close();conn.close();执行执
9、行SQL语句语句获取获取Statement对象对象关闭关闭Statement对象对象声明声明Statement变量变量示例示例演示示例演示示例2:使用:使用Statement添加宠物添加宠物 也可使用:也可使用:stmt. executeUpdate(sbSql.toString();使用Statement更新宠物 Connection conn = null;Statement stmt = null;/ 建立连接建立连接 / 更新狗狗信息到数据库更新狗狗信息到数据库stmt = conn.createStatement();String sql=update dog set health=
10、80,love=15 where id=1;int result=stmt.executeUpdate(sql);stmt.close();conn.close();示例示例演示示例演示示例3:使用:使用Statement更新宠物更新宠物 执行执行SQL语句语句获取获取Statement对象对象关闭关闭Statement对象对象声明声明Statement变量变量更新、添加、删除操更新、添加、删除操作只是作只是sql语句不同语句不同Statement和ResultSet查询宠物 Connection conn = null;Statement stmt = null;ResultSet rs =
11、 null;/ 建立连接建立连接 stmt = conn.createStatement();rs = stmt.executeQuery(select * from dog); while ( rs.next() ) System.out.print( rs.getInt(1) +t);System.out.print( rs.getString(2) +t);System.out.print(rs.getInt(health)+ t); rs.close();stmt.close();conn.close();执行执行SQL语句进行查询,语句进行查询,结果赋给结果集变量结果赋给结果集变量r
12、s注意关闭顺序注意关闭顺序遍历结果集遍历结果集可使用可使用列号或列号或列名列名标识列标识列ResultSet存在一个光标,光标所指行为当前行存在一个光标,光标所指行为当前行 示例示例演示示例演示示例4:使用:使用Statement和和ResultSet查询宠物查询宠物 Statement常用方法方法名方法名说说 明明ResultSet executeQuery(String sql)执行执行SQL查询并获取到查询并获取到ResultSet对象对象int executeUpdate(String sql)可以执行插入、删除、更新等操作,返可以执行插入、删除、更新等操作,返回值是执行该操作所影响的
13、行数回值是执行该操作所影响的行数boolean execute(String sql) 可以执行任意可以执行任意SQL语句,然后获得一个语句,然后获得一个布尔值,表示是否返回布尔值,表示是否返回ResultSetResultSet常用方法方法名说 明boolean next()将光标从当前位置向下移动一行将光标从当前位置向下移动一行boolean previous()游标从当前位置向上移动一行游标从当前位置向上移动一行void close()关闭关闭ResultSet 对象对象int getInt(int colIndex)以以int形式获取结果集当前行指定列号值形式获取结果集当前行指定列号值
14、int getInt(String colLabel)以以int形式获取结果集当前行指定列名值形式获取结果集当前行指定列名值float getFloat(int colIndex)以以float形式获取结果集当前行指定列号值形式获取结果集当前行指定列号值float getFloat(String colLabel)以以float形式获取结果集当前行指定列名值形式获取结果集当前行指定列名值String getString(int colIndex)以以String 形式获取结果集当前行指定列号值形式获取结果集当前行指定列号值String getString(String colLabel) 以以
15、String形式获取结果集当前行指定列名值形式获取结果集当前行指定列名值为什么要使用PreparedStatement使用JDBC完成主人登录验证功能演示示例演示示例5:SQL注入隐患注入隐患String sql=select * from master where name=+name+ and password=+password+;rs = stmt.executeQuery(sql); 正常登录正常登录 非正常登录非正常登录 SQL注入注入提高了代码的可提高了代码的可读性和可维护性读性和可维护性 PreparedStatement如何避免SQL注入的隐患?使用PreparedState
16、ment 接口 继承自 Statement接口 比Statement对象使用起来更加灵活,更有效率 提高了提高了SQL语句执行的性能语句执行的性能 提高了安全性提高了安全性问题问题分析分析 PreparedStatement接接口口 (预编译的(预编译的 SQL 语句)语句)使用PreparedStatement更新宠物 Connection conn = null;PreparedStatement pstmt = null;/ 建立连接建立连接 / 更新狗狗信息到数据库更新狗狗信息到数据库String sql=update dog set health=?,love=? where id=?;pstmt = conn.prepareStatement(sql);pstmt.setInt(1, 80);pstmt.setInt(2, 15);pstmt.setInt(3, 1);pstmt.executeUpdate(); pstmt.close();conn.close();声明声明Pre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025便利店智能支付系统引入合同3篇
- 二零二五版游泳教学服务合同模板
- 2025年度消防演练场地租赁与组织服务合同3篇
- 二零二五年度水电设备调试与性能检测合同3篇
- 专业化电力工程服务协议模板2024版
- 二零二五年电子商务平台数据加密与传输安全合同3篇
- 2024消防系统安装及消防安全培训与演练合同3篇
- 潍坊环境工程职业学院《美术学科发展前沿专题》2023-2024学年第一学期期末试卷
- 2024版信用卡贷款服务合同范本3篇
- 二零二五年度数据中心承包协议及范本2篇
- 产业链治理协同性
- 闸站监理实施细则
- 高三课题研究报告范文
- 2024年初三数学竞赛考试试题
- 窦性心动过速的危害
- 深基坑工程基坑土方开挖及支护降水施工方案
- 2024年江西生物科技职业学院单招职业技能测试题库带解析答案
- 医药制造企业资本结构优化研究以贵州百灵为例
- GB 31335-2024铁矿开采和选矿单位产品能源消耗限额
- 医院高风险意外事件应急措施和救护机制
- 桥本甲状腺炎-90天治疗方案
评论
0/150
提交评论