项目经理 Java mysql 连接次数

defeile 2010-09-20 10:36:56
我们做个项目
之前是我写了DAO
...全文
220 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 批量更新吧

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧