欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第九章 数据库编程.ppt

    • 资源ID:70010007       资源大小:5.09MB        全文页数:23页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第九章 数据库编程.ppt

    第九章数据库编程数据库编程 大多数单位将有价值的数据保存在关系数据库中,这就要求所开发的应用程序具有对数据库的访问能力。数据库编程 客户机客户机/服务器服务器应用程序应用程序 问题问题1 1:应用程序中的:应用程序中的SQLSQL语句如何传到数据库中执行语句如何传到数据库中执行数据数据库库发送发送SQL语句语句检索查询结果检索查询结果 问题问题2 2:数据库的执行结果如何返回到应用程序中:数据库的执行结果如何返回到应用程序中JDBCJDBC(Java Data Base Connectivity,java数据库连接)是Sun公司提供的一种实现对数据库访问的Java API。它可以为多种关系数据库提供统一访问,它的功能是由一系列的类和接口来完成的。开发者只需要使用相应的对象,即可以完成对数据库的操作。JDBC简介JDBC的框架结构JDBC API供程序员调用的接口与类,集成在java.sql包中,如:nDriverManager类nConnection接口nStatement接口nResultSet接口DriverManager载入各种不同的JDBC驱动JDBC 驱动负责连接各种不同的数据库SqlSql ServerServerMySQLMySQLJDBC API JDBC 驱动程序管理器驱动程序管理器 JDBC 驱动驱动 JDBC 驱动驱动 Java 应用程序应用程序 JDBC应用模型在数据库应用程序当中,最常见的系统结构是两层或三层模型。换句话说,Java应用程序即可以直接访问数据库,也可以将其作为中间层服务器应用程序。Java应用程序应用程序JDBCJDBCJSP/Servlet客客户户端端数据库服务器数据库服务器应用服务器应用服务器数据库服务器数据库服务器客客户户端端java.sql包接口或类名称接口或类名称说说明明DriverManager驱动程序管理类,用于加载和卸载各种驱动驱动程序管理类,用于加载和卸载各种驱动程序,并建立与数据库的连接程序,并建立与数据库的连接Driver该接口代表该接口代表JDBC驱动程序,由驱动程序供应驱动程序,由驱动程序供应商实现商实现Connection连接对象,用于与数据库取得连接连接对象,用于与数据库取得连接Statement语句对象,用于执行语句对象,用于执行SQL语句,并将数据检语句,并将数据检索到结果集(索到结果集(ResultSet)对象中)对象中ResultSet结果集对象,包含执行结果集对象,包含执行SQL语句后返回的数语句后返回的数据的集合据的集合SQLException数据库异常类,是其它数据库异常类,是其它JDBC异常类的根类,异常类的根类,绝大部分对数据库进行操作的方法都有可能绝大部分对数据库进行操作的方法都有可能抛出该异常抛出该异常访问数据库的步骤ConnectionDriverManagerStatementResultSet 1、加载加载JDBCJDBC驱动程序驱动程序 2 2、创建数据库连接,生成、创建数据库连接,生成ConnectionConnection对象对象 3 3、创建、创建StatementStatement对象,执行对象,执行SQLSQL语句语句 4 4、使用、使用ResultSetResultSet对象接收结果集,处理结果集对象接收结果集,处理结果集 5 5、关闭上述对象、关闭上述对象客客户户端端数据库服务器数据库服务器1234确定数据库类型,加载与数据库相匹配的驱动程序,通常有2种方式:n在个人开发与测试中,可以使用JDBC-ODBC桥连方式。n在生产型开发中,推荐使用纯Java驱动方式。不论采用哪种驱动方式,在程序中对数据库的操作方式基本相同,只是加载不同的驱动程序即可。加载JDBC驱动程序DB DB ServerServerDBDBServerServerJDBC APIJDBC Driver Manager纯纯Java 驱动驱动 JDBCODBC桥桥Java 应用程序应用程序 ODBC在控制面板ODBC数据源系统DSN中配置数据源。编程,使用Class.forName()进行装载,向驱动管理器注册。使用JDBC-ODBC桥接Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);演示:配置演示:配置ODBC数据源数据源JDBC-ODBC桥驱动类桥驱动类的完全限定类名的完全限定类名由JDBC驱动程序直接访问数据库,可以避免桥接方式的缺陷。其中,纯JAVA驱动程序由数据库厂商提供,开发者在应用程序中只需通过调用JDBC API建立应用程序到数据库的连接。优点:匹配性能更好,快速而且可跨平台。缺陷:访问不同的数据库需要下载专用的JDBC驱动。纯Java驱动程序JDBC 驱动驱动 Java 应用程序应用程序 JDBC API DBDBServerServer纯JAVA驱动程序加载步骤:n下载数据库厂商提供的驱动程序包n将驱动程序包引入到环境变量中n编程,加载驱动程序Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);sql server数据库驱动数据库驱动类的完全限定类名类的完全限定类名Class.forName(org.gjt.mm.mysql.Driver);MySQL数据库驱动类的数据库驱动类的完全限定类名完全限定类名创建数据库的连接,首先要获得数据库的JDBC URL地址,JDBC使用和网络URL类似的语法来描述数据库。JDBC URL 的格式如下:jdbcjdbc:子协议:子协议:数据源名称数据源名称利用JDBC/ODBC桥访问ODBC数据库,JDBC URL如下:jdbc:odbc:jdbc:odbc:学生库学生库访问SQL Server数据库,JDBC URL如下:jdbc:microsoft:sqlserverjdbc:microsoft:sqlserver:/localhost:1433;databaseName=:/localhost:1433;databaseName=学生库学生库访问MySQL数据库,JDBC URL如下:jdbc:mysqljdbc:mysql:/localhost:3306/:/localhost:3306/学生库学生库创建数据库连接获得JDBC URL地址后,必须使用DriverManagerDriverManager类的静态方法getConnectiongetConnection来获得连接对象;方方 法法 原原 型型说说 明明staticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException参数参数url是连接字符串,参数是连接字符串,参数user是数据库用是数据库用户名,参数户名,参数password是登录口令,成功连接到是登录口令,成功连接到数据库返回数据库返回Connection对象,连接失败则抛出对象,连接失败则抛出SQLException异常,必须捕捉。异常,必须捕捉。staticConnectiongetConnection(Stringurl)throwsSQLException参数参数url是连接字符串,成功连接到数据库返是连接字符串,成功连接到数据库返回回Connection对象。对象。Connection conn=DriverManager.getConnection(DBURL,“root”,”123”);Connection conn=DriverManager.getConnection(DBURL);连接成功后,通过Connection对象的createStatementcreateStatement方法来创建语句对象,才可以执行SQL语句;有三种 Statement 对象:nStatementStatement 对象用于执行不带参数的简单SQL语句;nPreparedStatementPreparedStatement 对象用于执行带或不带参数的预编译SQL语句nCallableStatementCallableStatement 对象用于执行对数据库存储过程的调用。Statement对象提供了三种执行SQL语句的方法:nexecuteQuery():用于产生单个结果集的sql,如select语句nexecuteUpdate:用于执行insert、delete、update、create table、drop table等nexecute():用于执行返回多个结果集、多个更新计数或二者组合的语句,多数程序员不会需要该高级功能。创建语句对象 Statement stmt=con.createStatement();String SQL=select*from 学生信息表;ResultSet rs=stmt.executeQuery(SQL);处理结果集JDBC通过ResultSet对象接收结果集。ResultSet对象包含了执行SQL语句后返回的结果集。结果集类似于数据库中的表,因此需要一个指针逐行读取数据,这个指针被称为游标。在刚创建的ResultSet对象中,游标指向第一行数据前。方方 法法 原原 型型说说 明明booleannext()throwsSQLException 将光标从当前位置向前移一行将光标从当前位置向前移一行getXxx(intcolumnIndex)throwsSQLExceptionXxx是数据类型,获取结果集中指定列的值,是数据类型,获取结果集中指定列的值,列从列从1开始。根据列的数据类型使用相应的开始。根据列的数据类型使用相应的getXxx方法方法ResultSet rs=stmt.executeQuery(SQL);while(rs.next()System.out.println(rs.getString(学号);System.out.println(rs.getString(姓名);System.out.println(rs.getInt(年龄);System.out.println(rs.getString(系别);前面的结果集只可以依次向下读取数据。如果想要读取结果集中任意一行,则必须创建一个可滚动显示的结果集。代码如下:创建可滚动的结果集后,就可以调用下面的方法来获取结果集中任意一行的数据。first()、last()、beforefirst()、afterlast()、previous()、absolute(int row)、relative()。创建滚动结果集Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);当对数据库的操作结束后,应当将所有已经被打开的资源关闭。Connection对象、Statement对象和ResultSet对象都有执行关闭的close方法。方法原型都是:void close()throws SQLException,如:rs.close();/关闭ResultSet对象sta.close();/关闭Statement对象con.close();/关闭Connection对象有可能抛出SQLException异常,必须捕捉。注意关闭的顺序,最后打开的资源最先关闭,最先打开的资源最后关闭。关闭资源数据库操作示例JDBC程序的工作模板try Class.forName(JDBC驱动类驱动类);catch(ClassNotFoundException e)System.out.println(无法找到驱动类无法找到驱动类);try Connection 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.printStackTrace();获得数据库连接获得数据库连接发送发送Sql语句语句处理结果处理结果注册注册JDBC驱动驱动JDBC URL用来标识数据库用来标识数据库 必须处理的异常必须处理的异常释放资源释放资源必须处理的异常必须处理的异常更新数据库可通过两种方法实现,一种是通过调用Statement对象的executeUpdate()方法,一种是创建可更新的结果集。通过SQL语句更新。如下所示:通过结果集更新。首先要创建一个可更新的结果集。更新数据库String SQL=“insert into 学生信息表(学号,姓名,年龄,系别)”+”values(1202,杨东平,20,计算机);int rowCount=stmt.executeUpdate(SQL);Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);可更新的结果集对象具有一个与其关联的特殊行插入行,该行用于构建要插入行的暂存区。插入行的操作修改行的操作删除行的操作 1、用moveToInsertRow定位游标,将游标定位到插入行 2、调用updateXXX方法更新插入行的每一列 3、调用updataRow将修改保存到数据库 1、将游标定位到修改的行 2、调用updateXXX方法修改该行的每一列 3、调用updataRow将修改保存到数据库 1、将游标定位到删除的行 2、调用deleteRow方法将该行从数据库和ResultSet删除如果要多次执行相似的SQL语句,可以使用PreparedStatemend(预编译语句对象)对象来执行;通过Connection对象的prepareStatement方法来创建预编译语句对象;PreparedStatement对象会将SQL语句预先编译,这样将会获得比Statement对象更高的执行效率。方方 法法 原原 型型说说 明明PreparedStatementprepareStatement(Stringsql)throwsSQLException参数参数sql是要执行的是要执行的SQL语句,根据指定的语句,根据指定的SQL语语句创建句创建PrepareStatement对象,有可能抛异常,必对象,有可能抛异常,必须捕捉须捕捉使用预编译SQL语句包含在PreparedStatement对象中的SQL语句可以带有一个或多个参数,使用“?”作为占位符,如:PreparedStatement ps=con.prepareStatement(UPDATEUPDATE Friends SET Friends SET Address=?WHERE Name=?Address=?WHERE Name=?);在执行SQL语句之前,必须使用PreparedStatement对象中的setX方法设置每个“?”位置的参数值;如:ps.setString(1,长沙);ps.setString(2,王五);方方 法法 原原 型型说说 明明voidsetX(intparameterIndex,Xx)throwsSQLException将将parameterIndex指定的指定的“?”位置指定为位置指定为x的值,这里的值,这里X可以指代任意数据类型,可以指代任意数据类型,“?”的索引从的索引从1开始。开始。

    注意事项

    本文(第九章 数据库编程.ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开