版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,第四章 JDBC,回顾,增加数据:insert 更新数据:update 删除数据:delete/truncate/drop 查询数据: 表别名、列别名 排除重复数据:distinct 限定行数:top n percent 单条件选择操作 多条件选择操作 范围查询(between.and、in、like) 处理空值:where 字段 is not null 数据排序: order by 字段 desc,目标,数据库应用程序与持久层概念,JDBC概述及使用,使用Connection、Statement和PreparedStatement,使用结果集(ResultSet),为什么需要JDBC,JD
2、BC是Java数据库连接技术的简称,提供连接各种常用数据库的能力,Java应用程序,JDBC,JDBC,JSP/Servlet,客户端,数据库服务器,应用服务器,数据库服务器,客户端,JDBC概述,为什么要使用JDBC SQL语句能够直接访问数据库,但是在JAVA中谁来操作SQL语句? 什么是JDBC Java DataBase Connectivity 是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成。通过这些类和接口,JDBC把SQL语句发送给不同类型的数据库进行处理并接收处理结果 JDBC两大类 对Java开发人员而言是API,对数据库提供商而言是接口
3、 面向开发人员:作为API,JDBC为程序开发提供标准的接口 面向数据库厂商:作为接口,让数据库厂商按标准方法来实现数据库连接与操作(数据库驱动程序),JDBC应用程序工作原理,JAVA企业应用与持久层,JDBC的四种驱动程序,JDBC-ODBC Bridge JDBC-ODBC桥 由SUN公司提供通用的驱动,能访问各种数据库,但效率极低 native-API partly-Java driver 本地库Java驱动程序,外层是java,底层可能是c,c+ 执行效率高,客户端必须安装本地驱动,维护不方便 net-protocal all-Java driver(JDBC Proxy) 网络协议
4、纯Java驱动程序(通用) 客户端不必安装本地库,使用方便,但性能相对较低 native-protocol all-Java driver 本地协议完全Java驱动程序 将JDBC调用转化为特定数据库的网络协议,效率很高,JDBC驱动 5-1,JDBC驱动由数据库厂商提供 在个人开发与测试中,可以使用JDBC-ODBC桥连方式 在生产型开发中,推荐使用纯Java驱动方式,DB Server,DB Server,JDBC API,JDBC Driver Manager,纯Java 驱动,JDBCODBC桥,Java 应用程序,ODBC,JDBC驱动 5-2,桥连 将对JDBC API的调用,转换
5、为对另一组数据库连接API的调用 优点:可以访问所有ODBC可以访问的数据库 缺点:执行效率低、功能不够强大,JDBC-ODBC桥,Java 应用程序,JDBC API,ODBC API,ODBC层,DB Server,JDBC驱动 5-3,使用JDBC-ODBC进行桥连 1、在控制面板ODBC数据源系统DSN中配置数据源 2、编程,通过桥连方式与数据库建立连接,-语法- Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con =DriverManager.getConnection(jdbc:odbc:news,sa,sa);,
6、JDBC-ODBC桥驱动类的完全限定类名,数据源名称,演示:配置ODBC数据源,JDBC驱动 5-4,纯Java驱动 由JDBC驱动直接访问数据库 优点:100% Java,快又可跨平台 缺点:访问不同的数据库需要下载专用的JDBC驱动,JDBC 驱动,Java 应用程序,JDBC API,DB Server,JDBC的常见API,JDBC驱动程序管理器,它是JDBC体系结构的支柱,主要作用是把Java应用程序连接到JDBC驱动程序上,然后退出,定义到数据库的连接,主要用于创建Statement对象,执行SQL语句的接口,通过相关方法执行静态的SQL语句,类用于检查并报告用JDBC操作数据库时
7、的各种异常,接收某查询SQL查询语句所返回的结果集对象,预编译的SQL语句,结合参数可以大大提高JDBC的执行效率,执行存储过程,JDBC开发步骤,加载驱动程序 创建一个连接对象 创建声明语句对象 执行SQL语句 使用声明语句对象的executeUpdate(sql)方法完成增删改操作 使用声明语句对象的executeQuery(sql)方法获得结果集对象 关闭各种对象,JDBC程序的工作模板,try Class.forName(JDBC驱动类); catch (ClassNotFoundException e) System.out.println(无法找到驱动类); try Connect
8、ion con=DriverManager.getConnection(JDBC 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); con.close(); catch (SQLException e) e.printStack
9、Trace(); ,获得数据库连接,发送Sql语句,处理结果,注册JDBC驱动,JDBC URL用来标识数据库,必须处理的异常,释放资源,必须处理的异常,演示一,使用JDBC查询数据 使用Class.forName加载驱动程序 使用DriverManager创建一个连接对象 使用连接对象创建声明语句对象 使用语句对象的executeQuery(sql)方法获得结果集对象,使用后立即关闭操作结果集对象 关闭声明语句对象 关闭数据库的连接,演示:使用JDBC查询数据,使用Class.forName加载驱动程序. try String driver = “com.microsoft.sqlserve
10、r.jdbc.SQLServerDriver”; Class.forName(driver); catch (ClassNotFoundException e) e.printStackTrace(); ,演示:使用JDBC查询数据,使用DriverManager创建一个连接对象 String url = jdbc:sqlserver:/localhost:1433;databaseName=name; String user = sa; String password = ; try Connection conn = DriverManager.getConnection(url, use
11、r, password); System.out.println(连接成功); conn.close(); catch (SQLException e) System.out.println(连接失败); e.printStackTrace(); ,演示:使用JDBC查询数据,使用语句对象的executeQuery(sql)方法获取并关闭结果集对象 Connection conn = DriverManager.getConnection(url, user, password); /创建语句对象 Statement st = conn.createStatement(); /查询数据 sql
12、 = select title_id, title, price from titles; ResultSet rs = st.executeQuery(sql); while(rs.next() String f1 = rs.getString(1); String f2 = rs.getString(title); String f3 = rs.getString(3); System.out.println(“f1=”+f1+“,f2=”+f2+“+“,f3=”+f3); /逆向关闭 rs.close(); st.close(); conn.close();,resultSet中的游标自
13、由移动,Jdbc2.1提供的新功能 resultSet中的游标可以自由移动,移到第一条,最后一条,上一条,下一条,移到指定的行都可以。 stat=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); set=stat.executeQuery(select * from products);,使用resultSet对象更新数据,Jdbc2.1提供的新功能 可以在resultSet对象更新数据 set.updateString(2, c); set.updateRow(); set.m
14、oveToInsertRow(); set.updateString(2, ,); set.updateString(3, ,); set.updateInt(4, 3); set.updateInt(5, 3); set.insertRow(); set.absolute(2); set.deleteRow();,演示二,演示:使用JDBC增加数据 使用Class.forName加载驱动程序 使用DriverManager创建一个连接对象 使用连接对象创建声明语句对象 使用声明语句对象的executeUpdate(sql)方法完成增删改操作 关闭声明语句对象 关闭数据库的连接,演示:使用JD
15、BC增加数据,使用Class.forName加载驱动程序. try String driver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”; Class.forName(driver); catch (ClassNotFoundException e) e.printStackTrace(); ,演示:使用JDBC增加数据,使用DriverManager创建一个连接对象 String url = jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=MyDB; String user =
16、 sa; String password = ; try Connection conn = DriverManager.getConnection(url, user, password); System.out.println(连接成功); conn.close(); catch (SQLException e) System.out.println(连接失败); e.printStackTrace(); ,演示:使用JDBC增加数据,使用连接对象创建声明语句对象 Connection conn = DriverManager.getConnection(url, user, passwo
17、rd); /创建语句对象 = 连接对象.create. Statement st = conn.createStatement(); 使用语句对象的executeUpdate(sql)方法操作数据 /操作数据 sql = insert into t_dept(d_no,d_name) values(60,lovo); st.executeUpdate(sql); System.out.println(操作成功); /逆向关闭 st.close(); conn.close();,JDBC开发步骤小结,1、加载驱动程序 Class.forName(driver) 2、创建一个连接对象 Connec
18、tion conn = DriverManager.getConnection(url, user, password); 3、 使用连接对象创建声明语句对象 Statement st = conn.createStatement(); 4、操作数据或查询数据 st.executeUpdate(sql); ResultSet rs = st.executeQuery(sql); 5、依次关闭各种对象 rs.close(); st.close(); conn. close();,PreparedStatement,PreparedStatement接口 (预编译的 SQL 语句),Stateme
19、nt 接口,当SQL语句将运行多次时,尽量使用PreparedStatement,以便提高运行效率,PreparedStatement 接口继承 Statement接口 PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率,使用PreparedStatement插入数据,public class NewsFirstTitleDB2 public static void main(String args) Connection con = null; PreparedStatement pStatement = null; try SimpleDateFor
20、mat hmFromat = new SimpleDateFormat(yyyy-MM-dd hh:mm:ss); con = ConnectionManager.getConnection(); String strSql = insert into FirstLevelTitle values(?,?,?,?); pStatement = con.prepareStatement(strSql); pStatement.setInt(1, 1); pStatement.setString(2, 军事); pStatement.setString(3, 管理员); pStatement.setString(4, hmFromat.format(new Date(); pStatement.execut
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《广播、电视和移动通信》课件
- 重症医学科中暑救治要点
- 金刚石石墨教学设计
- 酒店宴会厅综合设计方案
- 函数概念教学设计
- 清雅源标志设计
- 大别山旅游介绍
- 智能强化学习广告效果优化课程设计
- TLS安全优化实验课程设计
- FM收音机电路设计实践课程设计
- 湖北省2026届高考语文模拟卷四作文讲评:“生长与被看见从来不是同一回事”
- 2026年西安工投产业运营有限公司招聘(12人)笔试参考题库及答案解析
- 马工程《艺术学概论》课件-第九章课件电子教案
- 广东深圳市龙岗区2025-2026学年九年级中考模拟考试数学试题(含答案)
- 2026年新入团考试知识大全(必考知识点+完整题库+标准答案)
- 做账实操-砼业混凝土行业账务处理分录案例
- 桥梁事故应急池施工方案
- AQ3026-2026《化工企业设备检修作业安全规范》标准解读课件
- 2026年湖南省地理生物会考题库及答案
- 2026年1月浙江省高考(首考)思想政治试题(含答案)
- 2026年高中化学知识竞赛试卷及答案(共三套)
评论
0/150
提交评论