




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十三章,JDBC 基础知识,2,回顾,JTable的用途 如何使用JTable JTree 的用途 如何使用JTree,3,本章目标,了解JDBC的概念及必要性 了解JDBC驱动程序类型 理解JDBC 程序的结构 运用JDBC进行数据库编程,4,数据库访问技术简介,客户机/服务器 应用程序,数据库编程,ODBC,JDBC,两个常用的API,数据库,执行 SQL 语句,检索查询结果,5,数据库,ODBC,客户机/服务器 GUI应用程序,ODBC (开放式数据库连接) (Microsoft 提供),插 入,删 除,修 改,应用程序编程接口,查询,6,JDBC,JDBC (Java 数据库连接) (sun公司提供),Java 应用程序编程接口,Java应用程序,数据库,插 入,修 改,删 除,查询,7,JDBC 驱动程序的类型,JDBC 驱动程序 的类型,JDBC-ODBC桥驱动程序及ODBC驱动程序,本地API部分Java驱动程序,JDBC-Net 纯Java驱动程序,本地协议纯Java驱动程序,8,JDBC 体系结构 2-1,Java 程序,JDBC 驱动程序,数据库,SQL 命令,结果,9,JDBC 体系结构 2-2,应用层,Driver,Statement,ResultSet,Connection,各接口,驱动层,10,java.sql 包 3-1,11,java.sql 包 3-2,12,java.sql 包 3-3,SQLException,/* * fooBar */ public void foobar() throws SQLException throw new SQLException(“刚引发了一个 SQLException ”); , try fooBar(); catch(SQLException ex) System.out.println(“已捕获一个 SQLException 异常!”); System.out.println(“消息: “ + ex.getMessage(); System.out.println(“错误代码: “ + ex.getErrorCode(); ,调用 fooBar,13,JDBC 程序访问数据库的步骤 2-1,开 始,导入 java.sql包,加载并注册驱动程序,创建一个 Connection 对象,创建一个 Statement 对象,执行语句,关闭ResultSet 对象,关闭Statement对象,关闭连接,结 束,使用ResultSet对象,14,Friends 表的结构,JDBC 程序访问数据库的步骤 2-2,它演示访问数据库的各个步骤 在执行示例 1 中的程序之前,SQL Server 中应该存在一个 名为 friends 的表,演示:示例 1,/* 2005 Aptech Limited * 版权所有 */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; /* 这个类演示访问数据库需遵循的各个步骤. * version 1.0, 2005 年 8 月 26 日 * author Ben */ class Jdbctest /* 构造方法 */ protected Jdbctest() ,/*这是 main 方法. */ public static void main(String args) try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(ce); try String url = “jdbc:odbc:test“; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); ResultSet rs = s.executeQuery(“select * from friends“); while (rs.next() System.out.print(rs.getString(1) + “t“); System.out.print(rs.getString(2) + “t“); System.out.print(rs.getInt(3) + “t“); System.out.print(rs.getDate(4) + “t“); System.out.println(“ “); rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); ,15,JDBC 查询2-1,SQL 查询字符串,executeQuery() 方法,作为参数传递,ResultSet,返回查询数据,SELECT name, email, phone FROM colleagues;,使用 SQL 语句,查询可编写为:,String str = “SELECT emp_id, lname, fname FROM colleagues“; Statement stmt = con.createStatement(); ResultSet rset = stmt.executeQuery(str);,使用 JDBC 编写此查询,则代码为:,Statement接口,16,JDBC 查询2-2,它演示 SQL 中 sum( ) 方法的用法,演示:示例 2,/* * Jdbctest2 */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; /* 这个类演示 SQL 中 sum() 方法的用法 * version 1.0, 2005 年 8 月 26 日 * author Ben */ class Jdbctest2 /* 构造方法*/ protected Jdbctest2() ,/* 这是 main 方法*/ public static void main(String args) try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(ce); try String url = “jdbc:odbc:test“; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); ResultSet rs = s.executeQuery( “select hiredate, sum(salary) from friends group by hiredate“); while (rs.next() System.out.print(rs.getDate(1) + “t“); System.out.print(rs.getInt(2) + “t“); System.out.println(“ “); rs.close; s.close(); con.close(); catch (SQLException ce) System.out.println(ce); ,17,演示:示例 3,它演示 SQL 中 INSERT 语句的用法,/* * Jdbctest3 */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; /* 这个类演示 INSERT 语句的用法. * version 1.0, 2005 年 8 月 26 日 * author Ben */ class Jdbctest3 /* 构造方法 */ protected Jdbctest3() ,JDBC 插入数据实现,/* 这是 main 方法*/ public static void main(String args) try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(ce); try String url = “jdbc:odbc:test“; String str = “INSERT INTO “ + friends(name,address,salary)“ + “VALUES(朱八,深圳 ,25690)“; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); int rowcount = s.executeUpdate(str); String str1 = “select name, sum(salary) “ +from friends“ + “ group by name“;,ResultSet rs = s.executeQuery(str1); while (rs.next() System.out.print(rs.getString(1) + “t“); System.out.print(rs.getInt(2) + “t“); System.out.println(“ “); rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); ,18,JDBC 删除和修改实现,它演示 SQL 中各种命令的用法,演示:示例 4,/* * Jdbc2 */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; /* 这这个类演示 SQL 中命令的用法. * version 1.0, 2005 年 8 月 26 日 * author Ben */ class Jdbc2 /* 构造方法.*/ protected Jdbc2() ,public static void main(String args) Connection con; Statement stmt; String url; String sql; try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(ce); try url = “jdbc:odbc:test“; con = DriverManager.getConnection(url); sql = “Delete from friends where rtrim(name)like张三 ;“; System.out.println(“ “); stmt = con.createStatement(); stmt.executeUpdate(sql); System.out.println(“张三 的记录已删除“); stmt.close(); con.close();,con = DriverManager.getConnection(url); sql = “Update friends set address=青岛 where “ + “rtrim(name) like 李四; “; System.out.println(“ “); stmt = con.createStatement(); stmt.executeUpdate(sql); stmt.close(); con.close(); System.out.println(“李四的记录已更新“); catch (SQLException ce) System.out.println(ce); ,19,PreparedStatement接口 3-1,PreparedStatement接口 (预编译的 SQL 语句),PreparedStatement 用于提高运行时效率,执行 PreparedStatement 对象比执行 Statement 对象快,Statement 接口,20,PreparedStatement接口 3-2,它演示了PreparedStatement 的用法,演示:示例 5,/* * CourseAppl */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; import java.sql.PreparedStatement; /* 这个类演示 SQL 中 PreparedStatement 的用法*/ class CourseAppl private Connection con; private String url; private String serverName; private String portNumber; private String databaseName; private String userName; private String password; private String sql;,CourseAppl() url = “jdbc:microsoft:sqlserver:/“; serverName = “localhost“; portNumber = “1433“; databaseName = “test“; userName = “sa“; password = “sa“; private String getConnectionUrl() return url + serverName + “:“ + portNumber + “;databaseName =“ + databaseName + “;“; private java.sql.Connection getConnection() try Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“); con = DriverManager.getConnection( getConnectionUrl(), userName, password); if (con != null) System.out.println(“连接成功!“); catch (Exception e) e.printStackTrace(); System.out.println(“getConnection() 内的错误跟踪:“ + e.getMessage(); return con; ,public void display() try con = getConnection(); PreparedStatement pstmt = con.prepareStatement( “UPDATE friends SET salary = ? WHERE name like ?“); pstmt.setInt(1, 10000 ); pstmt.setString(2, “李四 “); pstmt.executeUpdate(); System.out.println(“记录已更新!“); Statement s = con.createStatement(); String sql = “SELECT * FROM friends “; ResultSet rs = s.executeQuery(sql); while (rs.next() System.out.println(“ “); System.out.print(rs.getInt(1) + “ “); System.out.println(rs.getInt(5); catch (SQLException ce) System.out.println(ce); public static void main(String args) CourseAppl retObj = new CourseAppl(); retObj.display(); ,21,PreparedStatement 接口 3-3,它演示在基于条件的 SQL 查询中如何使用 PreparedStatement,其中条件在 IN 参数中给出,演示:示例 6,import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; /* 这个类演示在基于条件的 SQL 查询中使用 PreparedStatement*/ class RetrieveRecords private Connection con; private String url; private String serverName, portNumber, databaseName, userName; private String sql; RetrieveRecords() url = “jdbc:microsoft:sqlserver:/“; serverName = “localhost“; portNumber = “1433“; databaseName = “test“; userName = “sa“; password = “sa“; ,private String getConnectionUrl() return url + serverName + “:“ + portNumber + “;databaseName =“ + databaseName + “;“; private java.sql.Connection getConnection() try Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“); con = DriverManager.getConnection( getConnectionUrl(), userName, password); if (con != null) System.out.println(“连接成功!“); catch (Exception e) e.printStackTrace(); System.out.println(“getConnection() 内的错误跟踪:“ + e.getMessage(); return con; ,public void display() try con = getConnection(); sql = “select * from Friends where Salary ?“; PreparedStatement pstmt = con.prepareStatement( sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); pstmt.setInt(1, 5000); ResultSet rs = pstmt.executeQuery(); while (rs.next() System.out.print(rs.getString(1) + “t“); System.out.print(rs.getString(2) + “t“); System.out.print(rs.getInt(3) + “t“); System.out.print(rs.getDate(4) + “t“); System.out.print(rs.getInt(5) + “t“); System.out.println(“ “); rs.close(); pstmt.close(); con.close(); catch (SQLException ce) System.out.println(ce); /* 这是 main 方法*/ public static void main(String args) RetrieveRecords retRec = new RetrieveRecords(); retRec.display(); ,22,使用结果集 3-1,ResultSet 对象完全依赖于 Statement 对象和 Connection 对象 每次执行 SQL 语句时,都会用新的结果重写结果集 当相关的 Statement 关闭时,ResultSet 对象会自动关闭,Next( ),get(),此方法将光标从 当前位置下移一行,从 ResultSet 对象返回数据,23,使用结果集 3-2,它演示对当前行的处理 使用 next() 方法时,记录是按顺序处理的 必须按照数据返回的顺序处理每行中的数据,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滑板礼仪知识培训
- 顶棚清洗施工方案模板
- 烧伤患者的液体管理
- 盐碱地绿化施工方案
- 益阳医学高等专科学校《环境工程土建基础》2023-2024学年第二学期期末试卷
- 上海纽约大学《临床输血学检验技术》2023-2024学年第一学期期末试卷
- 天然水源治理方案范本
- 《优化客户交流的艺术》课件
- 西安电子科技大学长安学院《信息系统分析与设计实验课》2023-2024学年第二学期期末试卷
- c级危房加固施工方案
- 订单延期交货的相关处理规定
- 有机溶剂作业场所个人职业病防护用品使用规范
- 汽车维修工(中级)技能理论考试核心题库(职校考试600题)
- 工商联各项规章制度
- 泸州老窖大学生入职培训试题三
- Piper疲乏修订量表附有答案
- 商洛市宝恒矿业有限公司商洛市商州区东窑沟铅锌矿矿山地质环境保护与土地复垦方案
- 委托采购合同模板 第三方委托采购合同模板(六篇)
- YS/T 1109-2016有机硅用硅粉
- GB/T 4744-2013纺织品防水性能的检测和评价静水压法
- 第三讲 酒店组织管理
评论
0/150
提交评论