线程,数据库的问题

蛋蛋De忧伤 2013-03-26 09:58:00
请教一下如何用线程从一个表中取出插入到另一张表中的时候,做事务处理,也就是说如果取出的数据全部插入另一张表了,那就插入成功,否则就事务回滚....
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2013-03-26
  • 打赏
  • 举报
回复
插入的时候,加exception,如果出现异常就回滚rollback 无论在plsql里,还是java等其他语言代码里,都一样的,捕获异常,提交或者回滚。有什么问题?
yhuib 2013-03-26
  • 打赏
  • 举报
回复
除非是自动提交,否则本来就是按事务处理的啊,只需要在全部插入另一张表后执行commit就行了啊,如果没有全部插入就执行rollback
蛋蛋De忧伤 2013-03-26
  • 打赏
  • 举报
回复
睿智天成 2013-03-26
  • 打赏
  • 举报
回复
按照上面给出的范例,使用异步线程进行调用就行了
睿智天成 2013-03-26
  • 打赏
  • 举报
回复

using System;
using System.Data.OracleClient;
// 事务回滚操作实例 [Oracle数据库表--CREATE TABLE userinfo(username varchar(20));]
public class Transcation
{
public static void Main()
{
try
{
// 1.创建一个 OracleConnection 对象连接到 Oracle 数据库,然后打开该连接
OracleConnection myOracleConnection
= new OracleConnection("User Id=scott;Password=tiger;Data Source=webapp");
myOracleConnection.Open();
// 2.创建一个OracleTransaction对象
// 调用OracleConnection对象的BeginTransaction()方法启动事务
OracleTransaction myOracleTransaction = myOracleConnection.BeginTransaction();
// 3.创建一个 OracleCommand 对象,用于存储 SQL 语句
OracleCommand myOracleCommand = myOracleConnection.CreateCommand();
// Transaction 属性初始化
myOracleCommand.Transaction = myOracleTransaction;
// 4.向表 userinfo 中添加一条记录tomcat
myOracleCommand.CommandText = "INSERT INTO userinfo values('tomcat')";
myOracleCommand.ExecuteNonQuery();
// 5.向表 userinfo 中添加第二条记录eclipse
myOracleCommand.CommandText = "INSERT INTO userinfo values('eclipse')";
myOracleCommand.ExecuteNonQuery();
// 6.事务回滚操作
myOracleTransaction.Rollback();
// 7.向表 userinfo 中添加第三条记录java
myOracleCommand.CommandText = "INSERT INTO userinfo values('java')";
myOracleCommand.ExecuteNonQuery();
// 操作完成后使用 Close() 方法关闭 OracleConnection 对象
myOracleConnection.Close();
//为了省事,统一捕获异常信息(实际项目开发中不推荐!)
}catch(Exception e){
//打印异常信息到控制台
System.Console.Write(e.Message);
}
}
}

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧