分享
分享赚钱 收藏 举报 版权申诉 / 26

类型JAVA语言 第十三章 JDBC 基础知识.ppt

  • 上传人:ysd1539
  • 文档编号:8147850
  • 上传时间:2019-06-11
  • 格式:PPT
  • 页数:26
  • 大小:755.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    JAVA语言 第十三章 JDBC 基础知识.ppt
    资源描述:

    1、第十三章,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 数据库连接)

    2、(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、3-2,12,java.sql 包 3-3,SQLException,/* fooBar*/ public void foobar() throws SQLException throw new SQLException(“刚引发了一个 SQLException ”); , tryfooBar(); catch(SQLException ex) System.out.println(“已捕获一个 SQLException 异常!”);System.out.println(“消息: “ + ex.getMessage();System.out.println(“错误代码: “ + ex.getE

    4、rrorCode(); ,调用 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* 版权所有

    5、 */ 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 m

    6、ain(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“);

    7、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 查询字

    8、符串,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

    9、 中 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

    10、() ,/* 这是 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 =

    11、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 中 INSE

    12、RT 语句的用法,/* * 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 插入数据实现,/*

    13、这是 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 = DriverM

    14、anager.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

    15、“);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 中命令的用法

    16、.* 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

    17、: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

    18、 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 语句),Prepare

    19、dStatement用于提高运行时效率,执行 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; impo

    20、rt 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

    21、 = “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 C

    22、lass.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; ,pub

    23、lic 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

    24、 * 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

    25、(); ,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 Re

    26、trieveRecords 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“; ,priva

    27、te String getConnectionUrl() return url + serverName + “:“ + portNumber+ “;databaseName =“ + databaseName + “;“;private java.sql.Connection getConnection() tryClass.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“);con = DriverManager.getConnection(getConnectionUrl(), userName, password);if (c

    28、on != 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, R

    29、esultSet.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

    30、.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 对象和

    31、Connection 对象 每次执行 SQL 语句时,都会用新的结果重写结果集 当相关的 Statement 关闭时,ResultSet 对象会自动关闭,Next( ),get(),此方法将光标从 当前位置下移一行,从 ResultSet 对象返回数据,23,使用结果集 3-2,它演示对当前行的处理 使用 next() 方法时,记录是按顺序处理的 必须按照数据返回的顺序处理每行中的数据, ResultSet rset = stmt.getResultSet();while(rset.next() String dept_name = rset.getString(1); ,24,使用结果集 3

    32、-3,演示对当前列的处理 使用 get() 方法可以直接访问列, Statement stmt = con.createStatement(); Stmt.executeQuery(“Select emp_id, fname from Employee“) ; ResultSet rset = stmt.getResultSet(); while(rset.next() String ename = rset.getString (“fname“);System.out.println ( ename) ; , Statement stmt = con.createStatement(); s

    33、tmt.executeQuery(“Select emp_id, fname from Employee“); ResultSet rset = stmt.getResultSet(); while(rset.next() String employeeid = rset.getString (1); ,以下代码显示值 1 被作为参数传递给 getString() 方法,这实际上指列 emp_id 的索引,25,结果集的类型,可滚动,不可滚动,光标仅向前移动,光标可前后移动,也可移动 至与当前位置相对的某一行,如果对数据库做了更改, 则新值是可见的,结果集,TYPE_SCROLL_INSENS

    34、ITIVE,TYPE_SCROLL_SENSITIVE,TYPE_FORWARD_ONLY,26,总结,JDBC概念的理解 使用 Class.forName() 方法可以将驱动程序加载到 Java 解释器中 使用 DriverManager 类的 getConnection() 方法和 Connection 对象的 createStatement() 方法可建立连接 最后,使用 executeQuery() 或 executeUpdate() 方法通过 Statement 实例构建并执行 SQL 语句 PreparedStatement 接口允许创建预编译的 SQL 语句,并使得在后续阶段可以指定语句的参数 结果集可以是可滚动的,也可以是不可滚动的,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:JAVA语言 第十三章 JDBC 基础知识.ppt
    链接地址:https://www.docduoduo.com/p-8147850.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开