log2

Q1、今天在做登录验证的测试时,居然总是发生如下异常:

javax.servlet.ServletException:   [Microsoft][SQLServer   2000   Driver   for   JDBC][SQLServer]对象名   'userInfo'   无效。

(userInfo是表名)

遇到这个问题,我首先去检查数据库中是否有这个表,userInfo这个表确实存在且没有拼写错误,但是java为什么找不到呢?我又重新写了一个类:

 

运行后,让我意想不到的是输出结果是1!即成功连接数据库并且查询到数据表中的用户名、密码。为什么这个连接和查询作为一个整体程序时就能成功,而我将他们分离时就出现异常呢?

久思无果,于是上网搜索。网络就是好,这一搜就找到了与我遇到同样问题的前辈们的解决办法,就是修改登录用户的默认数据库为要使用的数据库名称。乖乖照着做了,果然成功了!大喜!但是马上又意识到,如果我没有修改登录用户的默认数据库的权限呢,再者说了,就算我拥有至高无上的权限(比如sa),就这样更改了登录用户的默认数据库,也是对用户的不尊重吧,如果这个登录用户名还有其他的用途呢。所以我决定放弃这种方法,转而采用在给出sql语句时直接指定数据库名称。具体做法如下:

 

 

那么上一篇中的专门负责加载驱动和建立连接的类需要改了:

 

 

Q2、然而,就在我准备完整的异常也粘贴上时,第一种情况却出现不了异常!一切又正常了。不管我把默认数据库更改为什么名称,所有代码都是正确的。

真是百思不得其解!明明就是会出现异常的,就是让电脑睡眠了两小时而已,一切又正常了!暂且放下疑问,还是采用原来的连接方式吧!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值