日期:2014-05-17  浏览次数:20908 次

sqlserver 查询不到数据。请高手指导
数据库为SQLSERVER2008
语言为JAVA
用户登录的时候根据用户名和密码去查询。
但是项目跑一会儿后就会出现所有用户都不能登录的情况。
大概情况如下:
Java code

User user = getUser(String name, String password);//根据用户名和密码去数据库里查询用户信息
System.out.println(user);//当所有用户都无法登录的时候,这儿打印的是null值


在getUser方法里都打印了查询语句和参数,结果都能查询到数据。
而且System.out.println(user);能执行,并且执行很快,说明数据库也没有阻塞。

请问一下各位:
造成这种情况,大概有说明原因呢? 
为什么突然所有的用户都这样,重启服务就OK了,但是用了一会儿又会这样。
我觉得应该是数据库哪方面的原因。不知道程序中什么地方造成的。
谢谢大家了。。

------解决方案--------------------
帮顶~
------解决方案--------------------
这个还是去JAVA问问吧
------解决方案--------------------
你的user应该是个null,你调试下。
------解决方案--------------------
建议转到JAVA板块去问一下吧!
------解决方案--------------------
代码能给详细点吗?不知道你是怎么连的数据库、、用的是JNDI吗?
------解决方案--------------------
把getUser()方法贴出来看看。。。
------解决方案--------------------
不能登录,断电跟踪下。
重启就好了,不会是代码有缓存吧,记录了所有用户信息而没及时清理。
------解决方案--------------------
按你说的应该是 数据库连接没有释放掉

一段时间后连接被占满了 所以重启服务后可以正常使用

检查你的DAO操作类 在finally中关闭数据库连接
------解决方案--------------------
探讨

按你说的应该是 数据库连接没有释放掉

一段时间后连接被占满了 所以重启服务后可以正常使用

检查你的DAO操作类 在finally中关闭数据库连接

------解决方案--------------------
楼上说的对,估计是你没把数据库连接关闭
------解决方案--------------------
不能登录,是什么样反应?页面无响应什么的?
要是连接池满了,后台应该会有提示。
------解决方案--------------------
没有关闭连接
------解决方案--------------------
不知道你连接关闭没有 如果没有 就是你连接用完了 试试连接池 吧
------解决方案--------------------
debug,看是到那步比较慢
------解决方案--------------------
奇怪,期待答案
------解决方案--------------------
如果你用的是连接池的话,这种情况是会有的,比如说你设置同时访问的人事为500,超过500的就暂时连接不上,必须等别的连接关闭后,腾出空间,你才能有连接的机会
------解决方案--------------------
连接没有关闭吧,没有释放,好好把代码看下。改改就OK了 把所有连接都Close掉,应该就没问题的呢

------解决方案--------------------
池满?没有关闭连接??或是访问过于频繁么???
------解决方案--------------------
占满了吧

或者

不能登录,断电跟踪下。
重启就好了,不会是代码有缓存吧,记录了所有用户信息而没及时清理。