JDBC数据基础知识_第1页
JDBC数据基础知识_第2页
JDBC数据基础知识_第3页
JDBC数据基础知识_第4页
JDBC数据基础知识_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ACCP V4.0 第十三章第十三章 JDBC 基础知识 ACCP V4.0 回顾 qJTable的用途 q如何使用JTable qJTree 的用途 q如何使用JTree 2 ACCP V4.0 本章目标 q了解JDBC的概念及必要性 q了解JDBC驱动程序类型 q理解JDBC 程序的结构 q运用JDBC进行数据库编程 3 ACCP V4.0 数据库访问技术简介 客户机/服务器 应用程序 数据库编程数据库编程 ODBCJDBC 两个常用的API 数据库数据库 执行 SQL 语句 检索查询结果 4 ACCP V4.0 数据库数据库 ODBC 客户机/服务器 GUI应用程序 ODBC (开放式数

2、据库连接) (Microsoft 提供) 插 入 删 除 修 改 应用程序编程接口 查询 5 ACCP V4.0 JDBC JDBC (Java 数据库连接) (sun公司提供) Java 应用程序编 程接口 Java应用程序 数据库数据库 插 入修 改 删 除查询 6 ACCP V4.0 JDBC 驱动程序的类型 JDBC 驱动程序 的类型 JDBC-ODBC桥驱动程序及桥驱动程序及ODBC驱动程序驱动程序 本地本地API部分部分Java驱动程序驱动程序 JDBC-Net 纯纯Java驱动程序驱动程序 本地协议纯本地协议纯Java驱动程序驱动程序 7 ACCP V4.0 JDBC 体系结构

3、2-1 Java 程序 JDBC 驱动程序 数据库数据库 SQL 命令 结果 8 ACCP V4.0 JDBC 体系结构 2-2 应用层应用层 Driver StatementResultSet Connection 各接口 驱动层驱动层 9 ACCP V4.0 java.sql 包 3-1 接口名 说明 Connection此接口表示与数据的连接 PreparedStatement此接口用于执行预编译的 SQL 语句 ResultSet此接口表示了查询出来的数据库数据结果集 Statement此接口用于执行 SQL 语句并将数据检索到 ResultSet 中 10 ACCP V4.0 jav

4、a.sql 包 3-2 类名类名 说明说明 DriverManager此类用于加载和卸载各种驱动程序并建立与数据库的连接 Date此类包含将 SQL 日期格式转换成 Java 日期格式的各种方法 Time此类用于表示时间 TimeStamp此类通过添加纳秒字段为时间提供更高的精确度 11 ACCP V4.0 java.sql 包 3-3 qSQLException /* * fooBar */ public void foobar() throws SQLException throw new SQLException(“刚引发了一个 SQLException ”); try fooBar()

5、; catch(SQLException ex) System.out.println(“已捕获一个 SQLException 异常!”); System.out.println(“消息: “ + ex.getMessage(); System.out.println(“错误代码: “ + ex.getErrorCode(); 调用 fooBar 12 ACCP V4.0 JDBC 程序访问数据库的步骤 2-1 开 始 导入 java.sql包 加载并注册驱动程序 创建一个 Connection 对象创建一个 Statement 对象执行语句 关闭ResultSet 对象关闭Statement

6、对象关闭连接 结 束 使用ResultSet对象 13 ACCP V4.0 Friends 表的结构表的结构 JDBC 程序访问数据库的步骤 2-2 q 它演示访问数据库的各个步骤 q 在执行示例 1 中的程序之前,SQL Server 中应该存在一个 名为 friends 的表 演示:示例 1 列名称列名称数据类型数据类型 名称 Varchar(50) 地址Varchar(50) 电话Numeric 入职日期Datetime 工资Numeric /* 2005 Aptech Limited * 版权所有 */ import java.sql.SQLException; import java

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

8、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.getStrin

9、g(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); 14 ACCP V4.0 JDBC 查询2-1 SQL 查询字符串 executeQuery() 方法 作为参数传递 ResultSet 返

10、回查询数据 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接口接口 15 ACCP V4.0 JDBC 查询2-2 q 它演示 SQL 中 sum( ) 方法的用法 演示:示例 2 /*

11、* 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 方法*/ publ

12、ic 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 h

13、iredate, 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); 16 ACCP V4.0 演示:示例 3 q 它演示 SQL 中 INSERT 语句的用法 /* *

14、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 方法

15、*/ 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.getCon

16、nection(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.

17、println( ); rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 17 ACCP V4.0 JDBC 删除和修改实现 q 它演示 SQL 中各种命令的用法 演示:示例 4 /* * Jdbc2 */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; /* 这这个类演示 SQL 中命令的用法.

18、 * 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 = j

19、dbc: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 fri

20、ends 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); 18 ACCP V4.0 PreparedStatement接口 3-1 PreparedStatement接口 (预编译的 S

21、QL 语句) PreparedStatement 用于提高运行时效率 执行 PreparedStatement 对象比执行 Statement 对象快 Statement 接口接口 19 ACCP V4.0 PreparedStatement接口 3-2 q 它演示了PreparedStatement 的用法 演示:示例 5 /* * CourseAppl */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; i

22、mport 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; privat

23、e 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 g

24、etConnection() 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()

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

26、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

27、(); retObj.display(); 20 ACCP V4.0 PreparedStatement 接口 3-3 q 它演示在基于条件的 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 查询中使用

28、 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 = “

29、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(), user

30、Name, 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.p

31、repareStatement( 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.getDa

32、te(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(); 21 ACCP V4.0 使用结果集 3-1 q ResultSet 对象完全依赖于 Statement 对象和 Connection 对象 q 每次执行 SQL 语句时,都会用新的结果重写结果集 q 当相关的 Statement 关闭时,ResultSet 对象会自动关闭 Next( )get() 此方法将光标从 当前位置下移一行 从 ResultSet 对象返回数据 22 ACCP V4.0 使用结果集 3-2 q 它演示对当前行的处理 q 使用 next() 方法时,记录是按顺序处理的 q 必须

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论