数据库连接失败,请检查数据库配置信息

数据库连接失败,请检查数据库配置信息,第1张

1、最简单的方法是:在查询分析器中之执行语句:execsp_who

利用这个系统存储过程可以看到当前服务器上数据库的连接情况。

sp_who这个系统存储过程,经过查资料将常用的发一下,可以看看:

列出全部当前进程不带参数直接执行execsp_who列出的是全部,可以大体了解情况,执行结果演示:

spidecidstatusloginamehostnameblkdbnamecmd

------------------------------------------------

10backgroundsa0pubsLAZYWRITER

注意:blk的状态参数的意思是这个0(成功)或1(失败)

列出特定用户的进程,更具有针对性:execsp_who'west263'

假定当前数据库用户为west263,可以更清楚看出这个数据库连接信息。

2、用企业管理器界面也可以查信息

SQL2000:进入企业管理器,管理——当前活动——进程信息

SQL2005:进入managerstudio,展开对象管理器,管理——右键“活动监视器”——查看进程

SQL2008:进放managerstudio在菜单栏下面有一行图标,点击最后一个图标“活动监视器”,进入活动监视器的界面后,点击“进程”

3,用netstat-an命令,这个主要是查看1433的连接状态。

注:部分用户考虑安全修改了这个端口,不一定是1433。可以到mssql的网络工具tcp/ip协议那个地方进行端口查看

在非Web应用中,手工加载SpringIoC容器,不能用ApplicationContext,要用AbstractApplicationContext。用完以后要记得调用ctxclose()关闭容器。如果不记得关闭容器,最典型的问题就是数据库连接不能释放

首先这个问题与主键生成方式没有关系,况且楼主可能使用的是Mysql数据库,因此采用identity生成方式完全正确。

其次关于load取数据出现问题是因为取数据的表有级联关系,在我们分析此问题之前,我们先要明白hibernate中什么是load,什么是get,它们两者之间有什么区别呢??

只要你在以往的开发过程中稍加注意,不难发现,假如有两张表,他们为一对多关系,现在开始查询,如果使用get,那么查询的结果将会是把2张表的数据全部持久化到内存中(如果关系比较深你还打算用它吗?),如果是采用load的方式,那么将只会是把其中一张表(A表)的数据加载到内存中,而另一张表(B表)只存在一个标识,原则上是等页面显示时,如果只要显示A表数据,那么程序直接内存中找A表数据,如果还要显示B表数据,那么就要通过内存中B表的标识重新查找数据库,此时,问题出来了,假如你在DAO中,sessionload之后你结束了session的生命周期,那么在页面要显示B表数据,而B表在内存中只是一个标识啊,你的session又处于关闭状态,它无法找啊,这就会出现上面你遇到的那个问题,因此,假如我们不关闭session,页面可以正常显示2张表的数据了,但是问题又来了,如果不关闭session,那么对象将一直以持久态的形式保存在内存中,留下的隐患难以想象(比如该对象容易数据混乱等等),千万不要说sessionclear之内的东西也可以把对象变游离态之内的话啊,如果你彻底用sessionclear取代sessionclose的话,嘿嘿,自己去尝试吧,当问题显现出来的时候痛苦吧^_^!好了,我还是说下解决方法吧~最好的方法就是将DAO中的session与事物全部抽取出来做成一个hibernate过滤器,这样既能解决你上面的问题,又能大大减少DAO中的代码好处很多的哦,使用一次之后就容易上瘾-_-我空间里好象有,你可以去看看~稍微修改就可以用!(最好和工具类一起搭配使用,超爽滴!)

以上就是关于数据库连接失败,请检查数据库配置信息全部的内容,包括:数据库连接失败,请检查数据库配置信息、spring applicationcontextaware 为什么要@lazy、org.hibernate.exception.GenericJDBCException: could not load an entity:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9463573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存