首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

取最大序号时取错,找不出是啥有关问题,大家帮看看

2012-02-24 
取最大序号时取错,找不出是啥问题,大家帮看看sqlserver库,BCB6,代码如下,看日志里这个操作员一分钟存储了4

取最大序号时取错,找不出是啥问题,大家帮看看
sqlserver库,BCB6,代码如下,看日志里这个操作员一分钟存储了4次,但是存进去的序号是同一个

  Form0->ADOConnection1->BeginTrans() ;
  try
  {

  Query3->Close() ;
  Query3->SQL->Clear() ;
  Query3->SQL->Add(" select max(id) as xh from bills");
  Query3->Open() ;
  mid=IntToStr(Query3->FieldByName("xh")->AsInteger+1);

  Query3->Close() ;
  Query3->SQL->Clear() ;
  Query3->SQL->Add("insert into bills values ('"+user+"','存储',getdate(),'"+mid+"' )");
  Query3->ExecSQL() ;
  Form0->ADOConnection1->CommitTrans() ;
  }
  catch(Exception &e)
  {
  Form0->ADOConnection1->RollbackTrans() ;
  Application->MessageBoxA("存储失败,请重试","警示窗口",48);
  }

=======================================================================
管理员 存储 2010-05-27 18:11:20 96028
管理员 存储 2010-05-27 18:11:33 96028
管理员 存储 2010-05-27 18:11:58 96028
管理员 存储 2010-05-27 18:18:08 96028




[解决办法]
从你提供的代码看,出现这种情况是可能的,如果是多用户说不定还有相同的时间出现
[解决办法]
如果是多用户同时操作的话
建议用自增的字段 不要自己去添加
[解决办法]
劝你不要用max()取编号了
多人同时操作
问题多
[解决办法]
读之前锁一下子吧。

热点排行