JiveJdon Community Forums
在线437人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 5 回复 / 1
 发表新帖子   回复该主题贴
luowei

悄悄话
发表文章: 115
注册时间: 2004年07月01日 15:23
帮我一下吧,拜托了 2004年11月11日 22:53 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
我在同一个函数中使用两个连接一个更新,一个查询 为什么得不到更新后的结果 (得到的结果总是制后更新一步)
package untitled1;
import java.sql.*;
public class Untitled1 {
public static void main(String[] args) {
String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr="jdbc:odbc:cityLayoutManager";
String sql="";

Connection conn=null;
ResultSet rs=null;
Statement stmt=null;

Connection conn2=null;
ResultSet rs2=null;
Statement stmt2=null;

try{

Class.forName(sDBDriver);
conn=DriverManager.getConnection(sConnStr);
stmt=conn.createStatement();
}catch(java.lang.ClassNotFoundException e){
System.err.println(e.getMessage());
}catch(java.sql.SQLException e1)
{ System.err.println(e1.getMessage());}

try{
//原来为66666666666666
sql="update test set mydate='77777777777'";
stmt.executeUpdate(sql);

}catch(Exception e)
{
e.printStackTrace();
}

try{
Class.forName(sDBDriver);
conn2=DriverManager.getConnection(sConnStr);
stmt2=conn2.createStatement();
}catch(java.lang.ClassNotFoundException e){
System.err.println(e.getMessage());
}catch(java.sql.SQLException e1)
{ System.err.println(e1.getMessage());}


try{
sql="select * from test";
rs2=stmt2.executeQuery(sql);
if(rs2.next())
System.out.println(rs2.getString(1));
stmt.close();
conn.close();
stmt2.close();
conn2.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
我得到的却是66666666666666
每次执行得到的都是上一次的结果
stonecat

悄悄话
发表文章: 6
注册时间: 2004年11月15日 17:33
Re: 帮我一下吧,拜托了 2004年11月15日 17:50 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
你使用了两个连接:
第一个连接执行的更新尚未提交。第二个连接的查询当然看见的是没有更新的数据。
luowei

悄悄话
发表文章: 115
注册时间: 2004年07月01日 15:23
Re: 帮我一下吧,拜托了 2004年11月16日 22:01 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
stmt.executeUpdate(sql);
语句不是提交查询吗?
huanghong

悄悄话
发表文章: 1
注册时间: 2004年11月17日 13:18
Re: 帮我一下吧,拜托了 2004年11月17日 13:35 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
1、在更新语句后面加conn.commit试一下(一般来说这句没有必要,因为默认auto-commit 属性为true);
2、其实连接没有必要创建两个,一个足已,多了是浪费资源,影响性能,更新和查询可以用同一个,你不防试一下;
3、关闭连接最好放在finally中,这样可能确保用完之后连接一定会被关闭。在关闭连接前也要把结果集和创建的语句关掉。
不妨试一试!祝好运!
banq

悄悄话
发表文章: 9484
注册时间: 2002年08月03日 17:08
Re: 帮我一下吧,拜托了 2004年11月17日 16:48 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
需要重构一下,分成两个方法,每个方法需要finnaly中实现stmt.close();conn.close();
luowei

悄悄话
发表文章: 115
注册时间: 2004年07月01日 15:23
Re: 帮我一下吧,拜托了 2004年11月18日 21:24 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
但是我在项目中使用了自己写的数据库缓冲池,连接是不会被关闭的,也就是说,数据库会总是会制后修改一步了
这个主题有 5 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  发贴前查询 标签列表勿重复发表问题

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam