您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第8章 JDBC高级编程
《Java高级程序设计》第八章JDBC高级编程教育机构回顾正则表达式是一种可以用于模式匹配和替换的规范。一个正则表达式就是由普通的字符例如字符(a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。Pattern与Matcher的用法。使用正则表达式对字符串搜索或匹配。中国十大品牌IT教育机构JDBC简介-1JDBC是一种可用于执行SQL语句的JAVAAPI(ApplicationProgrammingInterface应用程序设计接口)。JDBC为数据库应用开发人员和数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯JAVA语言编写完整的数据库应用程序。中国十大品牌IT教育机构JDBC驱动程序的分类-1第一类JDBC驱动程序是JDBC-ODBC桥再加上一个ODBC驱动程序。这类驱动一般不用现在的编程应用中。代码的驱动程序,用于把JDBC调用转换成主流数据库API的本机调用。驱动程序,JDBC调用被转换成一种中间件厂商的协议,中间件再把这些调用转换到数据库API。驱动程序。是使用JDBC驱动程序访问数据库的首选方式操作数据库——步骤第1步:注册驱动(只做一次)第2步:建立连接(Connection)第3步:创建执行SQL的语句(Statement)第4步:执行语句第5步:处理执行结果(ResultSet)第6步:释放资源操作数据库——步骤操作数据库——注册驱动何谓驱动?不同的数据库厂商或者同一厂商的不同数据库版本都会提供不同的驱动,任何应用程序都是通过这个驱动来操作特定厂商、特定版本的数据库的。使用JDBC的第一步就是要注册(加载)这个驱动。第一步:注册驱动注册驱动有三种方式:1.Class.forName(“com.mysql.jdbc.Driver”);推荐这种方式,不会对具体的驱动类产生依赖2.DriverManager.registerDriver(com.mysql.jdbc.Driver);会对具体的驱动类产生依赖3.System.setProperty(“jdbc.drivers”,“driver1:driver2”);虽然不会对具体的驱动类产生依赖;但注册不太方便,所以很少使用第二步:建立连接通过Connection建立连接,Connection是一个接口类,其功能是与数据库进行连接(会话)。建立Connection接口类对象:Connectionconn=DriverManager.getConnection(url,user,password);其中URL的格式要求为:JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&…如:jdbc:mysql://localhost:3306/test“user即为登录数据库的用户名,如rootpassword即为登录数据库的密码,为空就填””第三步:创建执行对象执行对象Statement负责执行SQL语句,由Connection对象产生。Statement接口类还派生出两个接口类PreparedStatement和CallableStatement,这两个接口类对象为我们提供了更加强大的数据访问功能。创建Statement的语法为:Statementst=conn.createStatement();第四步:执行SQL语句执行对象Statement提供两个常用的方法来执行SQL语句。executeQuery(Stringsql),该方法用于执行实现查询功能的sql语句,返回类型为ResultSet(结果集)。如:ResultSetrs=st.executeQuery(sql);executeUpdate(Stringsql),该方法用于执行实现增、删、改功能的sql语句,返回类型为int,即受影响的行数。如:intflag=st.executeUpdate(sql);第五步:处理执行结果ResultSet对象ResultSet对象负责保存Statement执行后所产生的查询结果。结果集ResultSet是通过游标来操作的。游标就是一个可控制的、可以指向任意一条记录的指针。有了这个指针我们就能轻易地指出我们要对结果集中的哪一条记录进行修改、删除,或者要在哪一条记录之前插入数据。一个结果集对象中只包含一个游标。第六步——释放资源Connection对象的close方法用于关闭连接,并释放和连接相关的资源。——模板(天龙八步)扩展而来。PreparedStatement可以对SQL语句进行预编译并且可以存储在PreparedStatement对象中,当多次执行SQL语句时可以提高效率。作为Statement的子类,PreparedStatement继承了Statement的所有函数。=con.prepareStatement(updateusersetid=?whereusername=?”);其他的CRUD方法和Statement基本一致。接口类的对象来获取了查询结果集中的数据。但ResultSet功能有限,如果我们想要得到诸如查询结果集中有多少列、列名称分别是什么就必须使用ResultSetMeta接口了。ResultSetMeta是ResultSet的元数据。元数据就是数据的数据,“有关数据的数据”或者“描述数据的数据”。=rst.getMetaData();返回所有字段的数目publicintgetColumCount()throwsSQLException根据字段的索引值取得字段的名称publicStringgetColumName(intcolum)throwsSQLException根据字段的索引值取得字段的类型publicStringgetColumType(intcolum)throwsSQLException类,他主要用于执行SQL存储过程。在JDBC中执行SQL存储过程需要转义。JDBCAPI提供了一个SQL存储过程的转义语法:{callprocedure-name[arg1,arg2,...]}procedure-name:是所要执行的SQL存储过程的名字[arg1,arg2,...]:是相对应的SQL存储过程所需要的参数事务何谓事务?所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。事务的ACID属性:1.原子性(Atomicity):指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。2.一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态。3.隔离性(Isolation)事务的隔离性是指一个事务的执行不能被其他事务干扰。4.持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。语句来实现事务。COMMIT用于提交事务,ROLLBACK用于数据库回滚。通过这两个语句可以确保数据完整性;数据改变被提交之前预览;将逻辑上相关的操作分组。RollBack语句数据改变被取消使之再一次事务中的修改前的数据状态可以被恢复。语句作为一个事务执行,基本步骤为:先调用Connection对象的setAutoCommit(false);以取消自动提交事务。然后在所有的SQL语句都成功执行后,调用commit();如果在出现异常时,可以调用rollback();使方法回滚事务。事务在实际应用中经常会涉及到多个数据源的不同的连接,并且数据的操作要处于一个事务之中。如去银行进行转账,转账的两个账户是不同的银行,当然数据的操作就跨数据库了,或者叫处于不同的数据源之中。跨越多个数据源的事务,就要使用JTA容器实现事务。容器,大家非常熟悉的Tomcat不能实现JTA的操作。目前支持JTA的容器有非常著名的BEA公司的Weblogic,IBM公司的WebSphere等企业级的Web应用服务器。分成两阶段提交第一步,通过JNDI在分布式的环境中查找相关资源。javax.transaction.UserTransactiontx=(UserTransaction)ctx.lookup(“jndiName);
本文标题:第8章 JDBC高级编程
链接地址:https://www.777doc.com/doc-4073800 .html