我数据库方面的知识掌握的很少,希望能得到大家的帮助我用的是vc 6.0 oracle ADO, 碰到的问题是这样的在程序运行时输出了以下的错误记录:在某事物中的列入已存在
无法在此会话中启动更多的事务我查了一些资料大概找到了问题的原因,应该是在一个m_pConnection->BeginTrans和m_pConnection->CommitTrans对中插入了其它的事物,因为是多线程环境,所以这种事情很有可能发生。而且一般发生在RollbackTrans时。
程序中有类似下面这样的代码:// 线程1:
try
{
m_pConnection->BeginTrans(); // 。 m_pConnection->CommitTrans();
}
catch ()
{
m_pConnection->RollbackTrans();
}
// 线程2:
try
{
m_pConnection->BeginTrans(); // 。 m_pConnection->CommitTrans();
}
catch ()
{
m_pConnection->RollbackTrans();
}
我想请问大家,应该怎样避免这种事情?或者有没有什么方法能保证在一个BeginTrans和CommitTrans之间不会插入其它的事物非常感谢
无法在此会话中启动更多的事务我查了一些资料大概找到了问题的原因,应该是在一个m_pConnection->BeginTrans和m_pConnection->CommitTrans对中插入了其它的事物,因为是多线程环境,所以这种事情很有可能发生。而且一般发生在RollbackTrans时。
程序中有类似下面这样的代码:// 线程1:
try
{
m_pConnection->BeginTrans(); // 。 m_pConnection->CommitTrans();
}
catch ()
{
m_pConnection->RollbackTrans();
}
// 线程2:
try
{
m_pConnection->BeginTrans(); // 。 m_pConnection->CommitTrans();
}
catch ()
{
m_pConnection->RollbackTrans();
}
我想请问大家,应该怎样避免这种事情?或者有没有什么方法能保证在一个BeginTrans和CommitTrans之间不会插入其它的事物非常感谢
解决方案 »
- 菜菜再请教:第i和第i+1条记录的比较
- 请教:在不安装ORACLE的情况下,如何执行ORACLE存储过程??
- ORA-00214错误,Oracle起不来
- 游标记录数量太大,时间太长,造成ORA-01555错误,怎么解决?
- 存储过程的问题请教-急
- 急呀!!请各位大虾帮帮忙!
- 回复有分!
- 不能进入 oracle management server
- startup mount与startup restrict mount有何区别
- Oracle中存储过程的使用问题求教_游标方法的使用?
- 在BO里查看报表时,出现无法连接的错误。
- 初学者的问题(急):ejb3通过jndi连接oracle10g数据库出现的问题。
谢谢这位朋友提供的办法,可是有没有不从C++或多线程资源互斥下手的办法呢?比如ADO或Oracle提供有解决这种问题的办法吗?