已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第四章JDBC,回顾,增加数据:insert更新数据:update删除数据:delete/truncate/drop查询数据:表别名、列别名排除重复数据:distinct限定行数:topnpercent单条件选择操作多条件选择操作范围查询(between.and、in、like)处理空值:where字段isnotnull数据排序:orderby字段desc,目标,数据库应用程序与持久层概念,JDBC概述及使用,使用Connection、Statement和PreparedStatement,使用结果集(ResultSet),为什么需要JDBC,JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力,Java应用程序,JDBC,JDBC,JSP/Servlet,客户端,数据库服务器,应用服务器,数据库服务器,客户端,JDBC概述,为什么要使用JDBCSQL语句能够直接访问数据库,但是在JAVA中谁来操作SQL语句?什么是JDBCJavaDataBaseConnectivity是一种用于执行SQL语句的JavaAPI,它由一组用Java语言编写的类和接口组成。通过这些类和接口,JDBC把SQL语句发送给不同类型的数据库进行处理并接收处理结果JDBC两大类对Java开发人员而言是API,对数据库提供商而言是接口面向开发人员:作为API,JDBC为程序开发提供标准的接口面向数据库厂商:作为接口,让数据库厂商按标准方法来实现数据库连接与操作(数据库驱动程序),JDBC应用程序工作原理,JAVA企业应用与持久层,JDBC的四种驱动程序,JDBC-ODBCBridgeJDBC-ODBC桥由SUN公司提供通用的驱动,能访问各种数据库,但效率极低native-APIpartly-Javadriver本地库Java驱动程序,外层是java,底层可能是c,c+执行效率高,客户端必须安装本地驱动,维护不方便net-protocalall-Javadriver(JDBCProxy)网络协议纯Java驱动程序(通用)客户端不必安装本地库,使用方便,但性能相对较低native-protocolall-Javadriver本地协议完全Java驱动程序将JDBC调用转化为特定数据库的网络协议,效率很高,JDBC驱动5-1,JDBC驱动由数据库厂商提供在个人开发与测试中,可以使用JDBC-ODBC桥连方式在生产型开发中,推荐使用纯Java驱动方式,DBServer,DBServer,JDBCAPI,JDBCDriverManager,纯Java驱动,JDBCODBC桥,Java应用程序,ODBC,JDBC驱动5-2,桥连将对JDBCAPI的调用,转换为对另一组数据库连接API的调用优点:可以访问所有ODBC可以访问的数据库缺点:执行效率低、功能不够强大,JDBC-ODBC桥,Java应用程序,JDBCAPI,ODBCAPI,ODBC层,DBServer,JDBC驱动5-3,使用JDBC-ODBC进行桥连1、在控制面板ODBC数据源系统DSN中配置数据源2、编程,通过桥连方式与数据库建立连接,-语法-Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connectioncon=DriverManager.getConnection(jdbc:odbc:news,sa,sa);,JDBC-ODBC桥驱动类的完全限定类名,数据源名称,演示:配置ODBC数据源,JDBC驱动5-4,纯Java驱动由JDBC驱动直接访问数据库优点:100%Java,快又可跨平台缺点:访问不同的数据库需要下载专用的JDBC驱动,JDBC驱动,Java应用程序,JDBCAPI,DBServer,JDBC的常见API,JDBC驱动程序管理器,它是JDBC体系结构的支柱,主要作用是把Java应用程序连接到JDBC驱动程序上,然后退出,定义到数据库的连接,主要用于创建Statement对象,执行SQL语句的接口,通过相关方法执行静态的SQL语句,类用于检查并报告用JDBC操作数据库时的各种异常,接收某查询SQL查询语句所返回的结果集对象,预编译的SQL语句,结合参数可以大大提高JDBC的执行效率,执行存储过程,JDBC开发步骤,加载驱动程序创建一个连接对象创建声明语句对象执行SQL语句使用声明语句对象的executeUpdate(sql)方法完成增删改操作使用声明语句对象的executeQuery(sql)方法获得结果集对象关闭各种对象,JDBC程序的工作模板,tryClass.forName(JDBC驱动类);catch(ClassNotFoundExceptione)System.out.println(无法找到驱动类);tryConnectioncon=DriverManager.getConnection(JDBCURL,数据库用户名,密码);Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery(SELECTa,b,cFROMTable1);while(rs.next()intx=rs.getInt(a);Strings=rs.getString(b);floatf=rs.getFloat(c);con.close();catch(SQLExceptione)e.printStackTrace();,获得数据库连接,发送Sql语句,处理结果,注册JDBC驱动,JDBCURL用来标识数据库,必须处理的异常,释放资源,必须处理的异常,演示一,使用JDBC查询数据使用Class.forName加载驱动程序使用DriverManager创建一个连接对象使用连接对象创建声明语句对象使用语句对象的executeQuery(sql)方法获得结果集对象,使用后立即关闭操作结果集对象关闭声明语句对象关闭数据库的连接,演示:使用JDBC查询数据,使用Class.forName加载驱动程序.tryStringdriver=“com.microsoft.sqlserver.jdbc.SQLServerDriver”;Class.forName(driver);catch(ClassNotFoundExceptione)e.printStackTrace();,演示:使用JDBC查询数据,使用DriverManager创建一个连接对象Stringurl=jdbc:sqlserver:/localhost:1433;databaseName=name;Stringuser=sa;Stringpassword=;tryConnectionconn=DriverManager.getConnection(url,user,password);System.out.println(连接成功);conn.close();catch(SQLExceptione)System.out.println(连接失败);e.printStackTrace();,演示:使用JDBC查询数据,使用语句对象的executeQuery(sql)方法获取并关闭结果集对象Connectionconn=DriverManager.getConnection(url,user,password);/创建语句对象Statementst=conn.createStatement();/查询数据sql=selecttitle_id,title,pricefromtitles;ResultSetrs=st.executeQuery(sql);while(rs.next()Stringf1=rs.getString(1);Stringf2=rs.getString(title);Stringf3=rs.getString(3);System.out.println(“f1=”+f1+“,f2=”+f2+“+“,f3=”+f3);/逆向关闭rs.close();st.close();conn.close();,resultSet中的游标自由移动,Jdbc2.1提供的新功能resultSet中的游标可以自由移动,移到第一条,最后一条,上一条,下一条,移到指定的行都可以。stat=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);set=stat.executeQuery(select*fromproducts);,使用resultSet对象更新数据,Jdbc2.1提供的新功能可以在resultSet对象更新数据set.updateString(2,c);set.updateRow();set.moveToInsertRow();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)方法完成增删改操作关闭声明语句对象关闭数据库的连接,演示:使用JDBC增加数据,使用Class.forName加载驱动程序.tryStringdriver=“com.microsoft.sqlserver.jdbc.SQLServerDriver”;Class.forName(driver);catch(ClassNotFoundExceptione)e.printStackTrace();,演示:使用JDBC增加数据,使用DriverManager创建一个连接对象Stringurl=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=MyDB;Stringuser=sa;Stringpassword=;tryConnectionconn=DriverManager.getConnection(url,user,password);System.out.println(连接成功);conn.close();catch(SQLExceptione)System.out.println(连接失败);e.printStackTrace();,演示:使用JDBC增加数据,使用连接对象创建声明语句对象Connectionconn=DriverManager.getConnection(url,user,password);/创建语句对象=连接对象.create.Statementst=conn.createStatement();使用语句对象的executeUpdate(sql)方法操作数据/操作数据sql=insertintot_dept(d_no,d_name)values(60,lovo);st.executeUpdate(sql);System.out.println(操作成功);/逆向关闭st.close();conn.close();,JDBC开发步骤小结,1、加载驱动程序Class.forName(driver)2、创建一个连接对象Connectionconn=DriverManager.getConnection(url,user,password);3、使用连接对象创建声明语句对象Statementst=conn.createStatement();4、操作数据或查询数据st.executeUpdate(sql);ResultSetrs=st.executeQuery(sql);5、依次关闭各种对象rs.close();st.close();conn.close();,PreparedStatement,PreparedStatement接口(预编译的SQL语句),Statement接口,当SQL语句将运行多次时,尽量使用PreparedStatement,以便提高运行效率,PreparedStatement接口继承Statement接口PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率,使用PreparedStatement插入数据,publicclassNewsFirstTitleDB2publicstaticvoidmain(Stringargs)Connectioncon=null;PreparedStatementpStatement=null;trySimpleDateFormathmFromat=newSimpleDateFormat(yyyy-MM-ddhh:mm:ss);con=ConnectionManager.getConnection();StringstrSql=insertintoFirstLevelTitlevalues(?,?,?,?);pStatement=con.prepareStatement(strSql);pStatement.setInt(1,1);pStatement.setString(2,军事);pStatement.setString(3,管理员);pStatement.setString(4,hmFromat.format(newDate();pStatement.executeUpdate();catc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南临沧云县零工市场招聘销售顾问2人备考题库(综合题)附答案详解
- 2026四川自贡市汇安人力资源开发有限公司招聘园区产业发展服务专员的2人考前冲刺试卷含完整答案详解【夺冠】
- 2026江西省妇幼保健院科研助理招聘4人笔试题库带答案详解(完整版)
- 2026四川光雾山文旅康养产业有限公司招聘1人考前冲刺密卷参考答案详解
- 2026广西北海市博物馆招聘讲解员5人考前冲刺试卷及参考答案详解(新)
- 2026江西吉安市吉水县吉阳产业发展有限公司及其子公司面向社会招聘2名工作人员备考题库附答案详解【研优卷】
- 2026浙江宁波市镇海区技工学校招聘国企编制教职工6人考前冲刺试卷含答案详解【黄金题型】
- 山东省德州夏津县2026年七上数学期末检测模拟试题含解析
- 浙江省杭州市萧山区万向中学2027届七上数学期末教学质量检测模拟试题含解析
- 2026年中职机电技术应用(机电设备安装与调试)试题及答案
- CJ/T 184-2012不锈钢衬塑复合管材与管件
- 川大数学拔尖试题及答案
- 成人肠内营养支持的护理课件
- 半导体制造研发合作协议
- 新能源汽车电气系统检修-配套课件
- Unit 1 Discovering Useful Structures教学设计-2023-2024学年高中英语人教版(2019)必修第三册
- 气象行业职业技能竞赛(公共气象服务)考试题库大全-下(多选、判断题)
- 出纳常用表格模板格大全
- 苏教版四年级上册数学第四单元《统计表和条形统计图(一)》测试卷(含答案解析)
- 教学能力比赛学情分析图(源图可编辑)
- 功能危险分析(FHA)
评论
0/150
提交评论