首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 更新一个数据库出现更新错误的问题 [无满意答案结帖]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • repitile
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 10:45:24 楼主
    用一个事务,中间执行一个delete操作删除所有纪录和一个insert操作插入一些新的纪录,一般情况下执行结果都对;但是有时出现一个奇怪的现象,更新的结果中纪录总是重复的一条或者几条,很多,但是都重复。不知道可能是什么情况呢???
    另外,更新的过程中可能有其他的程序在读取该表。
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kbryant
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2008-08-21 10:56:081楼 得分:0
    可能你在delete的时候别人正在读取,所以没有delete成功,然后又insert进去就重复了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • repitile
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:10:592楼 得分:0
    try
    {
    cmd.executeNonQuery()
    }
    catch(Exception e)
    {
    trans.rollback();
    }
    没有catch到exception,应该是执行成功了吧
    引用 1 楼 kbryant 的回复:
    可能你在delete的时候别人正在读取,所以没有delete成功,然后又insert进去就重复了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hanhenry
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:12:273楼 得分:0
    最好加个事务

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxuyu1118
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:18:184楼 得分:0
    启用事务。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • GhostAdai
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:27:585楼 得分:0
    事务处理
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yagebu1983
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:29:066楼 得分:0
    事务中加锁!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • clxcxx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:31:017楼 得分:0
    帮顶+学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sl2161
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:33:508楼 得分:0
    用事务
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhzuo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 21:32:289楼 得分:0
    你的表结构是不是建的不好,或者主键设计的有问题。另外可以在SQL语句层面(使用存储过程)和ado.net层面使用SqlTransation来处理事物。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SuenSun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 21:42:2910楼 得分:0
    try
    {
    cmd.executeNonQuery() ;
    trans.commite(); //加上这一句吧
    }
    catch(Exception e)
    {
    trans.rollback();
    }
    代码就这样嘛,可能还差点东西 吧,//trans.commite();
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • repitile
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-28 08:38:3811楼 得分:0
    已经加了commit()了
    引用 10 楼 SuenSun 的回复:
    try
    {
    cmd.executeNonQuery() ;
    trans.commite(); //加上这一句吧
    }
    catch(Exception e)
    {
    trans.rollback();
    }
    代码就这样嘛,可能还差点东西 吧,//trans.commite();
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved