用Java编写一般应用程序,怎么实现在一个事务中访问了多种类型数据库。

注意要实现:一旦有一个数据库提交失败,就要回滚所有数据库,不管该事务中其他数据库有没有提交成功。为了保证数据的完整性,只要一个服务器commit失败,就算已经commit... 注意要实现:一旦有一个数据库提交失败,就要回滚所有数据库,不管该事务中其他数据库有没有提交成功。
为了保证数据的完整性,只要一个服务器commit失败,就算已经commit成功的数据库,也要rollback。但commit成功的数据库好像不能rollback。不知道,这个访问多种数据库的事务能不能够实现?
展开
 我来答
Big嘴
推荐于2016-02-24 · TA获得超过4097个赞
知道小有建树答主
回答量:697
采纳率:50%
帮助的人:635万
展开全部
我测试了用jdbc获得多个connection连接,可以实现,其实和连接一个数据库是一样的。
1、注册数据库驱动
2、用driverMagager获得数据库连接
3、获得connection之后就可以对数据库进行操作了

对于需求,其实也是比较容易实现的。只要对于多个要commit的地方,加到同一个try块中,就可以了。
只要一个数据库存储出错,就会跳出该try,之后再 catch中执行对所以数据库的rollback。
类似:
try{
以上对于数据库的操作代码略
.......................
conn1.commit();
conn2.commit();
conn3.commit();
//其中只要其中一个执行存储出错,就会跳到catch中,执行rollback,所以不要存储一个就commit一次,要一起commit 。
}catch(Exception e){
conn1.rollback();
conn2.rollback();
conn3.rollback();
}finall{
conn1.close();
conn2.close();
conn3.close();
}
主要就是对于执行成功的存储不要立刻就执行commit操作,这样如果之后的数据库出错就无法rollback成功的那个了。
我们等到所以对于数据库的操作都执行完毕后,再一起执行commit,如果其中那个出错也不至于过早的commit,而无法rollback了。
sunshinevsboy
2011-02-02
知道答主
回答量:32
采纳率:0%
帮助的人:20.1万
展开全部
不同类型的数据库 肯定有多个数据源 这个设计到数据库的分布式事务的处理 这个跟数据库本身有关是否支持分布式事务 如果数据库不支持没有办法 如mysql5 支持不是很好
如果没法实现 可以用手动编程实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木_头头
2011-02-01 · 超过24用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:61万
展开全部
你有几个数据库就写几个对应的DBManager,获得几个对应的connection
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3d6d410
2011-02-01 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:364
采纳率:0%
帮助的人:187万
展开全部
设置多个Connection
try{

1,Class.forName("com.jdbc.mysql...");
Connection conn = DriverManager.**(url,user,pwd);
PrepareStatement ps = conn.prepareStatement(sql);

**db2
**oracle
**
conn.setAutoCommit(false);
ResultSet rs_mysql = ps.execute();
ResultSet rs_oracle = ps.execute();
ResultSet rs_db = ps.execute();
boolean result_mysql = rs_mysql.commit();
boolean result_oralce = rs_oracle.commit();
}catch(Exception e ){

conn.rollback();

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式