项目经理 Java mysql 连接次数

defeile 2010-09-20 10:36:56
我们做个项目
之前是我写了DAO
...全文
176 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Resurgam_ 2010-09-24
用本地线程+连接池
回复
defeile 2010-09-20
这个还是用JDBC做的
没办法
我现在改成不close但是在导入10000+数据的时候
就会报错
不知咋整
严重: Servlet.service() for servlet MainAction threw exception
java.lang.OutOfMemoryError: Java heap space
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:430)
at com.mysql.jdbc.Connection.clientPrepareStatement(Connection.java:2186)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4781)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4686)
at com.mobile.base.BaseDao.editAll(BaseDao.java:113)
editAll方法是
public void editAll(String sql, Object[] args,Connection con) throws SQLException {
try {
System.out.println("@@@@@@"+sql);
pres = con.prepareStatement(sql);
if (args != null) {
for (int i = 0; i < args.length; i++) {
pres.setObject(i + 1, args[i]);
}
}
pres.executeUpdate();
} catch (Exception e) {
MobileLogger.logError(e.getMessage());
}
}
回复
zn85600301 2010-09-20
还是用HIBERNATE来管理数据库连接吧 自己管理很麻烦
你是把连接CLOSE了 但是连接真的关掉了嘛 谁也不知道
回复
napier 2010-09-20
如果对数据库的操作比较频繁,访问量大,还是一直连着好.
回复
defeile 2010-09-20
你们JDBC
连接什么时候关闭什么时候开启?
一个操作关闭一次还是一直开启?
一种说法:经常开关浪费
一种说法:一直连接着,浪费
回复
defeile 2010-09-20
我们做个项目
之前是我写了DAO
方法有查询(开一次连接,关闭一次连接)
修改
批量插入
...
每个方法都是开一次连接,关闭一次连接

现在经理要求
项目就开启一次连接
或一个用户开启一次连接

这种想法可行么?
不懂
回复
xuyang840117 2010-09-20
把链接写成 静态类 创建后 就一直有对象了
是这意思吧
回复
氧气网航 2010-09-20
你要说啥问题呢
回复
猫熊工作室 2010-09-20
C3P0连接池在tomcat中的详细配置

http://wolongshan.javaeye.com/blog/497400

看下吧
回复
zqfddqr 2010-09-20
[Quote=引用 4 楼 defeile 的回复:]
你们JDBC
连接什么时候关闭什么时候开启?
一个操作关闭一次还是一直开启?
一种说法:经常开关浪费
一种说法:一直连接着,浪费
[/Quote]一种说法:经常开关浪费 比较慢
一种说法:一直连接着,浪费 多用户会冲突
回复
zqfddqr 2010-09-20
这不明显的连接池需求

好像有个叫c3p0
回复
liufeng0209 2010-09-20
用连接池了吗?

数据库连接是非稳定,非长久的状态,随时有可能失效的,这样才有了连接池的概念,连接池会把失效的连接移除掉,并且新创建有效的连接.

所以你项目经理的想法根本不行.

第2个问题:你需要把tomcat的堆内存设为足够的大

回复
defeile 2010-09-20
有段代码:
try {
con = DBCon.getConnection();
pst = con.prepareStatement("select * from test";
rs = pst.executeQuery();
while (rs.next()) {
pst.close();
pst=con.prepareStatement("insert into test1(t1,t2,t3,t4,t5,t6,t7,t8,t9)values(?,?,?,?,?,?,?,?,?)";
pst.setString(1,rs.getString(1));
pst.setString(2,rs.getString(2));
pst.setString(3,rs.getString(3));
pst.setString(4,rs.getString(4));
pst.setString(5,rs.getString(5));
pst.setString(6,rs.getString(6));
pst.setString(7,rs.getString(7));
pst.setString(8,rs.getString();
pst.setString(9,rs.getString(9));
if(pst.executeUpdate()>0)i++;
}
}
当rs数据量大(大概800条记录以上)的时候出现javax.servlet.ServletException: Java heap space错误,请问高手如何解决呢?
回复
zn85600301 2010-09-20
不异常 我才感觉奇怪呢
Statement总有个容量吧 你这样无限的循环肯定内存溢出了
顺便问一下 如果其中一个异常了 操作过的的要回滚嘛?
你去百度下 JDBC 批量更新吧
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-09-20 10:36
社区公告
暂无公告