首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • java 如何操作临时表? [无满意答案结贴,结贴人:finalsyo]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • finalsyo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-19 16:08:27 楼主
    1.我在数据库里事先建立好了一张临时表。

    2.在程序里我如何更新它

    我这样写:String sql_tvalidtr = "insert into CONSUME_SURVEILLANCE_TEMP select from tvalidtr t";

            stmt.execute(sql_tvalidtr);

            conn.commit();

    为什么当我查询CONSUME_SURVEILLANCE_TEMP 的时候,它说查询的结果集为空?

    我该如何在程序中更新,读取临时表里的东西?

    (sql都没问题,我直接用PL/SQL操作时可以实现)
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Kit_LO
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 16:29:521楼 得分:0
    这个简单,你可以写一个触发器,
    分三种情况:inserting updating deleting
    如不明白,请留言,本人最近做一个招聘系统刚好用到过这些东西,还是比较熟悉的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • finalsyo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 16:36:292楼 得分:0
    引用 1 楼 Kit_LO 的回复:
    这个简单,你可以写一个触发器,
    分三种情况:inserting updating deleting
    如不明白,请留言,本人最近做一个招聘系统刚好用到过这些东西,还是比较熟悉的


    那请给一些详细的解释,应该如何建立这个触发器,在程序中如何进行更新?读取的话不需要触发器吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • josephjohnson
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 17:33:353楼 得分:0
    我觉得和触发器没有关系
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • waitgod
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 17:36:474楼 得分:0
    临时表中的数据
    当你commit之后
    里面的数据就没有了
    你必须把对临时表的所有操作放在同一个action中
    如果仅仅对临时表进行了相关更新便提交的话
    随着提交数据时会消失的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • waitgod
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 17:37:305楼 得分:0
    与触发器的关系不大
    当然用那个也可以解决的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • waitgod
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 17:38:366楼 得分:0
    写错了
    引用 4 楼 waitgod 的回复:
    临时表中的数据
    当你commit之后
    里面的数据就没有了
    你必须把对临时表的所有操作放在同一个transaction
    如果仅仅对临时表进行了相关更新便提交的话
    随着提交,数据是会消失的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • finalsyo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 21:33:467楼 得分:0
    引用 6 楼 waitgod 的回复:
    写错了
    引用 4 楼 waitgod 的回复:
    临时表中的数据 
    当你commit之后 
    里面的数据就没有了 
    你必须把对临时表的所有操作放在同一个transaction中 
    如果仅仅对临时表进行了相关更新便提交的话 
    随着提交,数据是会消失的 

    能粘些代码作参考吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • finalsyo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 08:53:558楼 得分:0
    引用 1 楼 Kit_LO 的回复:
    这个简单,你可以写一个触发器,
    分三种情况:inserting updating deleting
    如不明白,请留言,本人最近做一个招聘系统刚好用到过这些东西,还是比较熟悉的


    能给讲讲吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • finalsyo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 10:21:039楼 得分:0
    引用楼主 finalsyo 的帖子:
    1.我在数据库里事先建立好了一张临时表。

    2.在程序里我如何更新它

    我这样写:String sql_tvalidtr = "insert into CONSUME_SURVEILLANCE_TEMP select from tvalidtr t";
     
            stmt.execute(sql_tvalidtr);

            conn.commit();

    为什么当我查询CONSUME_SURVEILLANCE_TEMP 的时候,它说查询的结果集为空?

    我该如何在程序中更新,读取临时表里的东西?

    (sql都没问题,我直接用PL/SQL操作时可…


    经调试,才明白原来SQL与语言无关,JAVA 中 用JDBC可以正常操作临时表,粘上代码:
    private ResultSet TransactionDispose(Connection conn) {

    ResultSet rs = null;

    try {

    // conn.setAutoCommit(false);

    String sql_tvalidtr = "insert into CONSUME_SURVEILLANCE_TEMP (cardasn,offtransno,TRANSTYPE,TRANSAMOUNT,OPERATORID,TRANSTERMINAL,CARDBALANCE,indbtime,UNIID)select t.cardasn,t.offtransno,t.transtype,t.transamount,t.operatorid,t.transterminal,t.cardbalance,t.indbtime,t.uniid from tvalidtr t where t.transtype <> '26'";

    String sql_tinvalidtr = "insert into CONSUME_SURVEILLANCE_TEMP (cardasn,offtransno,TRANSTYPE,TRANSAMOUNT,OPERATORID,TRANSTERMINAL,CARDBALANCE,indbtime,UNIID)select t.cardasn,t.offtransno,t.transtype,t.transamount,t.operatorid,t.transterminal,t.cardbalance,t.indbtime,t.uniid from tinvalidtr t where t.transtype <> '26'";

    String sql = "select * from (select cardasn , offtransno+1 begin ,lead(offtransno,1,0) over(partition by cardasn order by offtransno )-1 end ,lead(offtransno,1,0) over(partition by cardasn order by offtransno )- offtransno-1 amount from CONSUME_SURVEILLANCE_TEMP ) where amount > 0";

    Statement stmt = conn.createStatement();

    stmt.executeUpdate(sql_tvalidtr);

    stmt.executeUpdate(sql_tinvalidtr);

    rs = stmt.executeQuery(sql);

    // conn.commit();

    // stmt.close();

    } catch (SQLException e) {

    e.printStackTrace();
    }
    return rs;
    }
    不关闭CONN,可以正常使用RS
    修改 删除 举报 引用 回复

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