14jdbc使用JDBC访问数据库_第1页
14jdbc使用JDBC访问数据库_第2页
14jdbc使用JDBC访问数据库_第3页
14jdbc使用JDBC访问数据库_第4页
14jdbc使用JDBC访问数据库_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

本章内JDBC简JDBC概JDBC的组使用 数据与数据库建立连查询数据处理结更新数据库操参数的输入和输事务处2JDBC简关系数据早期,各个数据库厂商推出了众多的数据库系间使用不同的通信协议使得它们之间的互连成为一个棘手的问题,特别是当用户需要从客户端不型数据库都使用SQL语言执行数据查询和。3JDBC简关系数据库(续 使用不同的API编写不同的数据 程序。在(OpenDataBaseConnection开放式数据库连接)出现 于是,出现了ODBC41JDBC简ODBC和 应用程

数据51JDBC简ODBC和即JavaDatabaseConnection,是按照ODBC的模javaAPI,这使得程序员可以面对统一的数据库界面,61JDBC简JDBC简 中,其中java.sql属于71JDBC简JDBC-ODBC,B没JDBCJDBCDriverManagerorDataSourceObject类型1JDBC-BridgePartialJavaJDBCDBClient类型2DBClient,B没JDBCJDBCDriverManagerorDataSourceObject类型1JDBC-BridgePartialJavaJDBCDBClient类型2DBClient所以便携性较差。如JDBC-Application-->JDBC-ODBC-->JDBC-ODBCLibrary--81JDBC简部分Java技术的本地API驱动程序来赖来赖p托本地的数据库的客户端代携性较差。Application--->JDBC

JDBCJDBCJDBCDriverManagerorDataSourceObject型>NativeDatabaselibrary--->Dat型

JDBC-Bridge

PartialJDBCDriver DBClientDBClient比类型1DBClientDBClient

91JDBC简全部基于Java技术的本地API驱动程序据库无关的协议和中间件服务器进行通信,中间件给那务器再将客户端的JDBC调用转给那Application--->JDBC>javamiddleware---

JDBCJDBCJDBCDriverManagerorDataSourceObject具有最大的灵活性,通常供,是四种类型中最小的

PureJava JDBCDriver4

PureJDBCDriver DBDB

1JDBC简全部基于Java技术的本地协议驱动程序全部基于Java语言的。该类型的驱动程序中包 据库进行通信。Application--->JDBC那具有最大的灵活性,通那

JDBCJDBCJDBCDriverManagerorDataSourceObject供,是四种类型中最小的

PureJava JDBCDriver4

PureJDBCDriver DBDB

JDBC简注意Java应用程Java应用程数据ODBC数据特数据ODBC数据特定驱动程数据onnetServer数据pureJDBCJDBC类型类型类型APIBridgeJDBC-JDBCJDBC简应用程序使用 数据过程使用 数据与数据库建立连加载数据库驱动程序DriverManager.registerDriver(驱动程序实例与数据库建立连Connectionconn=2使用 数据JDBC-ODBC桥形式连接数//连接各种数据库的dsnStringdbUrl="jdbc:odbc:dsn名称";

有空 AccessDriver2使用 数据JDBC直连(连接类型4)形式连接数据//加载具体数据库的驱动 或 StringdbUrl= 2使用 数据例各数据的驱动程序和url连接串连接连接SQL 2使用 数据Informix数据2使用 数据连接SQL 2使用 数据数据 关闭连2使用 数据查询数据在JDBC中,数据库查询由实现接口StatementPreparedStatement、CallableStatement的对象完成(1)创建Statement对Statementstmt=conn.createStatement();ResultSetr=stmt.executeQuery("SELECTFROMbooksWHERE2使用 数据stmt.close();无用的ateent对象在 回收时会被自动关闭但最好在使用完atent对象时立即关闭,以释放资源。在关闭teent对象时,其相应的结果集也被关闭。2使用 数据注意Statement接口的executeQuery用来执行一条查询语以返回多个结果集,它的参数是一SQL语句的字错误的SQL语句在执行时会出现SQLException一个Statement对象在同一时刻只能对一个结果集2使用 数据处理结ResultSet接口的基本处理方ResultSet对象有一个指向当前行的指针2使用 数据ResultSet对象执行过 intsno=getInt("sno或Stringsname=getString("name");//或2使用 数据查询语句执行状态的executeQuery(String用来执行查询语句,返回一个ResultSet对象executeUpdate(String用来执行更新语句(如UPDATE、INSERTDELETE),返回更新的记录2使用 数据例Statement的executeQuery(sql)方法Stringdburl="jdbc:odbc:Driver={ AccessDriverConnectionconn=Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery("select*from{System.out.printf("%d}2使用 数据例Statement的executeUpdate(sql)方法String AccessConnectionconn=DriverManager.getConnection(dburl,"","");//Statementintsum=stmt.executeUpdate("updatestudentset '");//更新所有System.out.println("影响行数ResultSetrs=stmt.executeQuery("select*from{System.out.println(rs.getInt(1)+""+rs.getString(2)+""+}2使用 数据例Statement的executeUpdate(sql)方法INTEGER,nameVARCHAR(50),authorstmt.executeUpdate("insertintobooksvalues(4,' 删除数据中的表2使用 数据例Statement的execute(sql)String AccessConnectionconn=DriverManager.getConnection(dburl,"","");//Statementbooleanresult=stmt.execute(“updatestudentset '");//更新所有System.out.println("结果ResultSetrs=stmt.executeQuery("select*from{System.out.println(rs.getInt(1)+""+rs.getString(2)+""+}2使用 数据主动获取查询结果(Statement方法如果当前结果是ResultSet类型,可以使getResultSet方法获得当前结果集,然后对其进行如果当前结果是一个更新记录数,可以使getUpdateCount方法获得更新记录数2使用 数据例Statement的主动获取查询结果方String AccessConnectionconn=DriverManager.getConnection(dburl,"","");//Statementstmt.execute("select*fromstudent");//未接受返回//stmt.executeQuery("select*fromstudent");//也行ResultSetrs=stmt.getResultSet()获取执行sql后的结果集stmt.execute("deletefromstudentwhereintsum=stmt.getUpdateCount();//获取执行sql后的影响行2使用 数据Statement对象在每次执行SQL语句时,都要ResultSetr=stmt.executeQuery("SELECT*FROMstudentWHEREname='zhangsan'");r=stmt.executeQuery("SELECT*FROMstudentWHEREname='lisi'");r=stmt.executeQuery("SELECT*FROMstudentWHEREname='wangwu'");2使用 数据创建一个PreparedStatement对PreparedStatement对象的SQL语句可以接受参 epaedStateent对象上的查询语句和更新语句都可以设置输入参数。在生成edStatent对象时,在L语句中用"?"标明参数,在执行SQ语句前,可以使用styPreparedStatementpstmt=conn.prepareStatement("SELECTFROMstudentWHERE2使用 数据第一个参数代表要赋值的参数在SQL语句中的位置例 2使用 数据执行查询语ResultSetr=pstmt.executeQuery(上述语句可以执行多次,而无需重新给出SQL语句executeQuery方法返回一个ResultSet对象PreparedStatement接口有一个不带参数的方法,能够返回多个结果集2使用 数据2使用 数据例String AccessConnectionconn=DriverManager.getConnection(dburl,"","");//user:adminPreparedStatementpstmt=conn.prepareStatement("SELECT*FROMstudentWHEREname=?"); ResultSetSystem.out.println("学号 ResultSet 2使用 数据CallableStatement接 2使用 数据创建CallableStatement对CallableStatementcstmt=conn.prepareCall("{call参数是一个字符串 过程名称}"Query1是数据库中的一 过程名称cstmt.setString(1,"parameter");ResultSetr=cstmt.executeQuery(2使用 数据接受输出参 在执行过程以后,可以使用getType方法获取出参数的值,在方法中要获取哪一个参数的值。如果一个过程既返回结果集,又返回输出参数,则在2使用 数据执 过Resultr=cstmt.executeQuery( 对查询结果的处理方法与PreparedStatement一样cstmt.close(使用 数据过程例1.建 过createprocedureproc_student_info@snamechar(10)if@snameisnull ame,gradefromwheresc.sno=student.snoand oorderby{ Stringdburl="jdbc: Connectionconn=DriverManager.getConnection(dburl,"sa","");CallableStatementcstmt=conn.prepareCall("{callproc_student_info(?)}"); ResultSet{}}catch(Exceptione)事务处什么是事事务事务和程序是两个概一个应用程序通常包含多个事事务是恢复和并发控制的3务处如何定义事显式方beginSQL语句SQL语句隐式方

beginSQL语句SQL语句3务处事务结事务正常结 事务异常终事务回滚到开始的状3务处事务的ACID特性原子性一致性 型持续性3务处原子性事务是数据库的逻辑工作事务中包含的诸操作要么做,要么一致性一致性状数据库中只包含成功事务提交的结不一致状数据库中包含失败事务的3务处银行转账:从帐号A中取出一万元,存入帐号B定一个事务,该事务包含两个操作AB①A=A-②这两个操作要么全做,要么全全做或者全不做,数据库都处于一致性如果只做一个操作,数据库就处于不一致3务处 并发执行的各个事务之间不能相互干3务处①读②读③A①读②读③A←A-④写回3务处持续也称 性 3务处例修改学号为1,课程号为2的成绩为要么全执行,要么全部执行,使用事务处理如下1.加载驱动、建立连接 mit(false);//关闭自动提3.执行SQL语mit();//整体提mit(true);//打开自动提 4据连接原预先建立一定数量的数据库连接对象,当客户程序请求则建立一个物理连接。当客户程序关闭入池中,并不真正关闭。这样提高了系统的性能4据连接池-优使用连接池还可以显著减少到运行SQLServer的计算机的网络

温馨提示

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

评论

0/150

提交评论