- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
15.7 JDBC事务 事务 数据库的事务就是对现实生活中事务的模拟,它由一组在业务逻辑上相互依赖的SQL语句组成。为了保证事务的完整性,JDBC提供了相应的事务控制机制。 事务提交模式 在JDBC编程模型中,一个数据库连接建立时,就处于一个自动提交模式,每一个SQL语句被执行完成后就会被自动提交,反映至数据库中。当需要把几条逻辑上相关的SQL组成一个事务执行时,就需要关闭事务自动提交模式。如下面的语句所示: con.setAutoCommit(false);//关闭自动提交模式 一旦关闭了事务自动提交模式,不会有任何SQL语句被提交至数据库系统执行,除非显式的调用提交方法。 public void transfer(Account a,Account b,int amount)throws SQLException { PreparedStatement pstmt =null; String sql=update tb_account set balance=? where id=?; try { pstmt = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //关闭自动提交模式,以下语句直到commit()前都作为一个完整的事务执行 con.setAutoCommit(false); //开始处理转账,将账户a上减少amount元 pstmt.setInt(1, a.getBalance()-amount); pstmt.setString(2, a.getId()); pstmt.executeUpdate(); //将账户b上增加amount元 pstmt.setInt(1,b.getBalance()+amount); pstmt.setString(2, b.getId()); pstmt.executeUpdate(); mit();//提交上面的两次操作 } catch (SQLException e) { con.rollback();//回滚操作,取消本次事务中的所有已执行SQL语句 throw e;//继续抛出异常,告诉调用者转账没有成功 } } 15.8数据源和连接池 通过数据源对象也可以获得到数据库的连接。 连接池技术是一项能够极大提升数据库访问性能的技术,其本质是将实现建立好的若干连接存放于集合中,利用代理技术提供连接的获取和释放。 SQLServerDataSource ds = new SQLServerDataSource(); ds.setUser(sa); ds.setPassword(123456); ds.setServerName(localhost); ds.setPortNumber(1433); ds.setDatabaseName(bank); con = ds.getConnection(); SQLServerConnectionPoolDataSource ds = new SQLServerConnectionPoolDataSource(); PooledConnection pool=ds.getPooledConnection(); ds.setUser(sa); ds.setPassword(123456); ds.setServerName(localhost); ds.setPortNumber(1433); ds.setDatabaseName(bank); con = pool.getConnection();//通过连接池获得对象 表15-5主要的SQL类型及其Java对应类型 SQL类型 Java类型 SQL类型 Java类型 ARRAY java.sql.Array BIGINT long BINARY byte[] bit boolean BLOB java.sql.Blob CHAR String CLOB java.sql.Clob DATALINK .URL DATE java.sql.Date DOUBLE double FLOAT double INTEGER int NULL null NUMERIC java.math.BigDecimal REAL float REF java.sql.REF SMALLINT short STRUCT java.sql.Struct TIME java.sql.Time TIMESTAMP java.sql.Timestamp TINYINT byte VARBINARY byte[] VARCHAR Str
文档评论(0)