重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
楼主因为在hibernate中是Threadlocal管理session的你的session.close()后,Threadlocal的还没有马上请空的,如果你hibernate的session资源不够就很容易产生Too many connections的异常,可以这样解决都可以试试
创新互联是一家集网站建设,白银区企业网站建设,白银区品牌网站建设,网站定制,白银区网站建设报价,网络营销,网络优化,白银区网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1添加一个连接池配置文件,增加session线程池的线程数,通过设置
property name="hibernate.connection.provider_class"
org.hibernate.connection.C3P0ConnectionProvider
/property
property name="hibernate.c3p0.max_size"30/property ——————可以设置大一点
property name="hibernate.c3p0.min_size"1/property
property name="hibernate.c3p0.timeout"1800/property
property name="hibernate.c3p0.max_statements"1000/property
property name="hibernate.c3p0.idle_test_period"30000/property
property name="hibernate.c3p0.acquire_increment"1/property
property name="hibernate.c3p0.validate"false/property
2用楼上的方法,将session.close()修改为:sessionFactory.closeSession(),因为用sessionFactory关闭session会清空ThreadLocal的session
试试吧楼主如果不行,可能还是某一个session的问题
--------------------------------------------
没写对,不好意思是hibernateSessionFactory.closeSession()
_____________________________________________是不是你经常要用到hibernate插入大量数据?
是提示out of memory吗
因为hibernate使用缓存插入数据的,当你save时
它只是把数据保存在session中,没有马上插入,所以经常插入大量数据会造成内存不够
______________________________________________-
不过有解决方法的楼主
命令:exit或者QUIT。
在Unix中,也可以按control-D键断开服务器。
连接mysql:
格式: mysql -h主机地址 -u用户名 -p用户密码
1、连接到本机上的MYSQL。(假设用户名、密码均为root)
命令mysql -u root -p,回车后输密码root;再回车即可;
或者直接键入命令mysql -uroot -proot回车即可;
注意:用户名前空格可有可无,但是密码前必须没有空格,否则再次输入密码。
如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了。
2、连接到远程主机上的MYSQL。
假设远程主机的IP为:110.110.110.110,用户名为root,密码为root。则键入以下命令:
mysql -h110.110.110.110 -uroot -proot;(注:p与root之间可以不用加空格)
3、一些MySQL安装允许用户以匿名(未命名)用户连接到本地主机上运行的服务器。
直接输入命令:mysql。
扩展资料:
增加新用户mysql命令:
格式:create user ‘用户名’@’主机地址’ identified by ‘密码’;
1、增加tom1用户 密码为 tom1,可在任何主机登录:
create user 'tom1'@'localhost' identified by 'tom1';
2、引号可省略,即:
create user tom1@localhost identified by 'tom1';
3、主机地址存在 % 时不可省略引号,即:
create user tom1@'192.168.1.%' identified by 'tom1';
当然要关闭。如果不关闭虽然也会过期,但是会较长时间占用mysql宝贵的连接资源。
每完成一个cursor最好就要关闭一次cursor。连接可以不用关闭,直到你不再使用当前连接,再关闭连接。
MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。
在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常!
show
processlist
;显示的数据里有个id字段,就是sessionid,执行
kill
id就可,
如果是通过命令行连接mysql的
可以执行
status查看你的sessionid,如果是应用程序,你可以根据info、user、host字段来找你想杀掉的线程,(注:应用程序一般和mysql都是做短连接的,执行完sql后都会关闭session,除非是卡在那,或者执行时间太长,才有机会在show
processlist中看到)
哥们下面也是2个数据操作方法1是用来执行插入操作2是用来显示操作3是APP.CONFIG配置文件,需要导入引用mysql.data.dll来连接数据库
1 public void getconn(string sql)//数据库操作链接方法
{
string conn = ConfigurationSettings.AppSettings["conn"].ToString();
MySqlConnection mysql = new MySqlConnection(conn);//实例化链接
mysql.Open();//开启
MySqlCommand comm = new MySqlCommand(sql, mysql);
comm.ExecuteNonQuery();//执行
mysql.Close();//关闭资源
}
---------------------------------------------------------------------------------------------------------
2 public static MySqlDataAdapter getadaoter(string sql)//显示操作
{
string conn = ConfigurationSettings.AppSettings["conn"].ToString();
MySqlConnection mysql = new MySqlConnection(conn);//实例化链接
mysql.Open();//开启
MySqlCommand comm = new MySqlCommand(sql, mysql);
comm.ExecuteNonQuery();
MySqlDataAdapter mda = new MySqlDataAdapter(sql, mysql);
mysql.Close();
return mda;
//需要在调用的时候进行数据集填充
}
----------3
app.config
?xml version="1.0" encoding="utf-8" ?
configuration
appSettings
add key="conn" value="Server=112.124.17.213;User ID=root;Password=123;Database=goods;CharSet=gbk;"/
!--链接数据库--
add key="category" value="st_category"/
/appSettings
/configuration