版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ACCP V4.0第十三章第十三章JDBC 基础知识 ACCP V4.0回顾qJTable的用途 q如何使用JTableqJTree 的用途q如何使用JTree2ACCP V4.0本章目标q了解JDBC的概念及必要性q了解JDBC驱动程序类型 q理解JDBC 程序的结构q运用JDBC进行数据库编程 3ACCP V4.0数据库访问技术简介 客户机/服务器应用程序 数据库编程数据库编程ODBCJDBC两个常用的API数据库数据库执行 SQL 语句检索查询结果 4ACCP V4.0数据库数据库ODBC客户机/服务器 GUI应用程序ODBC(开放式数据库连接)(Microsoft 提供)插 入删 除修
2、 改应用程序编程接口 查询 5ACCP V4.0JDBC JDBC(Java 数据库连接)(sun公司提供)Java 应用程序编程接口Java应用程序数据库数据库 插 入修 改删 除查询 6ACCP V4.0JDBC 驱动程序的类型JDBC 驱动程序的类型 JDBC-ODBC桥驱动程序及桥驱动程序及ODBC驱动程序驱动程序 本地本地API部分部分Java驱动程序驱动程序 JDBC-Net 纯纯Java驱动程序驱动程序 本地协议纯本地协议纯Java驱动程序驱动程序 7ACCP V4.0 JDBC 体系结构 2-1Java 程序 JDBC 驱动程序数据库数据库SQL 命令 结果 8ACCP V4.
3、0JDBC 体系结构 2-2 应用层应用层 Driver StatementResultSet Connection 各接口驱动层驱动层 9ACCP V4.0java.sql 包 3-1 接口名 说明 Connection此接口表示与数据的连接PreparedStatement此接口用于执行预编译的 SQL 语句 ResultSet此接口表示了查询出来的数据库数据结果集Statement此接口用于执行 SQL 语句并将数据检索到 ResultSet 中 10ACCP V4.0java.sql 包 3-2类名类名 说明说明 DriverManager此类用于加载和卸载各种驱动程序并建立与数据库的
4、连接Date此类包含将 SQL 日期格式转换成 Java 日期格式的各种方法Time此类用于表示时间TimeStamp此类通过添加纳秒字段为时间提供更高的精确度 11ACCP V4.0java.sql 包 3-3qSQLException/* * fooBar */public void foobar() throws SQLException throw new SQLException(“刚引发了一个 SQLException ”);try fooBar(); catch(SQLException ex) System.out.println(“已捕获一个 SQLException 异常!
5、”); System.out.println(“消息: “ + ex.getMessage(); System.out.println(“错误代码: “ + ex.getErrorCode();调用 fooBar12ACCP V4.0JDBC 程序访问数据库的步骤 2-1开 始导入 java.sql包 加载并注册驱动程序创建一个 Connection 对象创建一个 Statement 对象执行语句关闭ResultSet 对象关闭Statement对象关闭连接结 束使用ResultSet对象13ACCP V4.0Friends 表的结构表的结构JDBC 程序访问数据库的步骤 2-2q 它演示访问
6、数据库的各个步骤q 在执行示例 1 中的程序之前,SQL Server 中应该存在一个 名为 friends 的表演示:示例 1列名称列名称数据类型数据类型名称 Varchar(50)地址Varchar(50)电话Numeric入职日期Datetime工资Numeric/* 2005 Aptech Limited * 版权所有 */import java.sql.SQLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.Resul
7、tSet;/* 这个类演示访问数据库需遵循的各个步骤. * 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 = jd
8、bc: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.pr
9、int(rs.getDate(4) + t); System.out.println( ); rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 14ACCP V4.0JDBC 查询2-1SQL 查询字符串 executeQuery() 方法 作为参数传递ResultSet 返回查询数据SELECT name, email, phone FROM colleagues;使用 SQL 语句,查询可编写为:String str = SELECT emp_id, lname, fnam
10、e FROM colleagues;Statement stmt = con.createStatement();ResultSet rset = stmt.executeQuery(str);使用 JDBC 编写此查询,则代码为:Statement接口接口15ACCP V4.0JDBC 查询2-2q 它演示 SQL 中 sum( ) 方法的用法演示:示例 2/* * Jdbctest2 */import java.sql.SQLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.
11、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.
12、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.prin
13、t(rs.getInt(2) + t); System.out.println( ); rs.close; s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 16ACCP V4.0演示:示例 3q 它演示 SQL 中 INSERT 语句的用法/* * Jdbctest3 */import java.sql.SQLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;imp
14、ort 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.pr
15、intln(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 f
16、riends + 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); 17ACCP V4.0JDBC 删除和修改实现q 它演示 SQL 中各种命令的用
17、法演示:示例 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; State
18、ment 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.create
19、Statement(); 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(); co
20、n.close(); System.out.println(李四的记录已更新); catch (SQLException ce) System.out.println(ce); 18ACCP V4.0PreparedStatement接口 3-1 PreparedStatement接口(预编译的 SQL 语句)PreparedStatement 用于提高运行时效率执行 PreparedStatement 对象比执行 Statement 对象快Statement 接口接口19ACCP V4.0PreparedStatement接口 3-2 q 它演示了PreparedStatement 的用法演
21、示:示例 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
22、 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
23、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) S
24、ystem.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(
25、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.getI
26、nt(5); catch (SQLException ce) System.out.println(ce); public static void main(String args) CourseAppl retObj = new CourseAppl(); retObj.display(); 20ACCP V4.0PreparedStatement 接口 3-3 q 它演示在基于条件的 SQL 查询中如何使用 PreparedStatement,其中条件在 IN 参数中给出演示:示例 6import java.sql.SQLException;import java.sql.Connecti
27、on;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()
28、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.for
29、Name(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 d
30、isplay() 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.getStrin
31、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.print(rs.getInt(5) + t); System.out.println( ); rs.close(); pstmt.close(); con.close(); catch (SQLException ce) System.out.println(ce); /* 这是 main 方法*/ public static
32、void main(String args) RetrieveRecords retRec = new RetrieveRecords(); retRec.display(); 21ACCP V4.0使用结果集 3-1 q ResultSet 对象完全依赖于 Statement 对象和 Connection 对象q 每次执行 SQL 语句时,都会用新的结果重写结果集q 当相关的 Statement 关闭时,ResultSet 对象会自动关闭Next( )get()此方法将光标从当前位置下移一行 从 ResultSet 对象返回数据 22ACCP V4.0使用结果集 3-2 q 它演示对当前行的处理q 使用 next() 方法时,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南曲靖经济技术开发区综合保障局招聘城镇公益性岗位工作人员的1人模拟试卷附答案详解【培优B卷】
- 2026江苏苏州常熟市昆承湖建设投资集团有限公司及下属公司招聘14人笔试题库含答案详解【A卷】
- 2026广西贺州市县级政府统计机构招聘统计协管员(协统员)32人笔试题库(含答案详解)
- 2026广东河源市龙川县教育系统招聘教师98人考前冲刺密卷及答案详解(典优)
- 2026年冬季冰雪路面自动驾驶方案
- 2025-2026学年四川省成都市郫都区三下数学期中学业质量监测模拟试题含答案解析
- 2025-2026学年四川省南充市蓬安县数学三年级第二学期期中联考模拟试题含答案解析
- 2026石油生意現狀綜合營銷企劃投資評估
- 2026人工智能算法在金融信贷风险评估中的应用模型测试分析研究
- 2026中国医药物流自动化行业仓库改造需求与分拣效率提升方案
- 2025至2030全球及中国锂离子电池保护集成电路行业发展趋势分析与未来投资战略咨询研究报告
- 政法维稳工作课件
- 园区车辆安全管理培训课件
- 《农业技术推广》课件
- 啤酒市场营销策略考核试卷
- PCB多层压合工艺流程解析
- 安全环保主管竞聘
- 检测合同三方协议
- 小儿隐匿性阴茎手术
- 《稻草人》阅读指导课件
- 金属非金属矿山重大事故隐患判定标准-露天矿山
评论
0/150
提交评论