使用工具:SQL Server2014,MyEclipse10
错误背景:
学习了jsp之后打算自己做一个小小的JavaWeb项目练手,然后跑了数据库工具类里面的Main类测试方法,因为是老师给的代码,没有仔细研究(上周网页显示数据库内容那部分成功了,没有管过这个类),于是今天尝试run了一下Main类,结果报出了一系列错误……错误如下
报错一:
前排提示:这里使用的是用户名sa登录的,连接成功,查询成功
当时我看到提示student的时候我有点懵,因为我很清楚记得我所有的数据库里没有student这张表(就是因为往数据库这方面想了,才导致这么弱智问题浪费我两个小时的*),然后我就各种百度,都说是数据库没有这张表(嗯……就这句话坑死我了),然后我就在数据库里找了很久,一直没有看我Main里面用来测试的那句sql语句。
错误原因:实际上,是我sql语句里面写的是“insert into student……”就是这里的错
所以看到这个报错的时候,不要怀疑,一定是不存在此表但是操作里面却用到了这张表
报错二:
这个是当时我以为用户名sa连接有些什么差错了,然后重新新建了一个用户名,再进行连接的时候的报错。
解决办法:新建用户名之后,还需要更改数据库权限以及映射里面,将要使用的数据库添加到映射里,这个就解决了。
操作如图:
问题没解决时run了Main这个测试好几次,还出现了另外一个报错(声明我什么都没有动),如图:
这个就有点奇葩了,百度的时候,说什么数据库连接池缺了什么配置文件啦,要加什么什么代码啦……然后把用户名属性那里更改之后就没出现任何报错了,这个跳过吧,欢迎路过的大神解决~
然后除了上面两个错误,还有一个错误是使用SQL Server的时候遇到的
在新建查询的时候,我是在选中表,然后新建查询,但是直接写“select * from users”会提示users无效(users是我使用的数据库里面的一张表),当时我以为是两个数据库有同样名字的表产生的错误,于是删除掉了其中一个数据库,然而问题还是没有解决,问题的真正原因是:
新建查询的时候没有选中要查询的数据库,可能选的是系统数据或者别的,反正不是拥有这张表的数据库
这个是老师强调过的,我给忘了……
另外,如果不选中数据库,在查询前面加上use Dome
(Dome是被查询的数据库),也不会出现问题,当然执行之后工具栏中选择的数据库会自动变成被查询的那个数据库。
或者在表名前面加“数据库名.dbo.表名”这样也不会报错了
错误原因:查询的时候没有指明差的是哪个数据库的表
这次遇到的关于数据库连接的错误就是这些吧
总结:
这些问题其实很明显都是小白容易犯的错,但是自己找错误花费时间的代价有点大,而且还不一定能解决。不要太过依赖百度,多动脑子想想为什么出错了,一味百度容易掉坑里
当时其实可以分析问题的:
之前没有测试jsp连接了数据库的页面是可以在tomcat上面运行起来的(使用sa用户名的时候),说明数据库连接包括查询都没有问题,那么很明显应该是Main类里面sql语句的问题。
其次换了自己新建的用户名之后虽然在SQL Server里面连接成功了,但是用myEclipse连的时候是失败的,应该是没有找到Dome这个数据库,然后跑一下网页,网页上也会失败出不来页面,提示异常信息的,这说明数据库没有连接成功。
注意:user是数据库里关键字,如果表名使用user,会报错