项目场景:
数据库中有数据,却查询不到。报错内容为:java.sql.SQLException: No database selected Query
问题描述:
环境描述:
1.以下是我Tomcat服务器登录程序的代码(环境是IDEA) ,我用?占位符查询数据
2.以下是我MySQL数据库中内容:
操作过程:
3.当我打开服务器后,输入用户名 密码
理论上应该显示登录成功,帐号密码完全与数据库一致
结果却是:
原因分析:
接下来进入了漫漫排除之路~
开始我怀疑是不是语句写错了,于是我在idea中集成好数据库,并在控制台写了SQL语句
4.我用控制台查询是查得到结果的
结果是数据库中查询到了。
排除SQL语句书写原因后,我仔细查看了Tomcat服务器输出内容
5.查看服务器输出
tom...tom123
是我打印的用户输入结果,这个是正确的,说明用户输入到服务器是没问题的。
null
是我打印数据库查询后的对象,null
意味着在查询的时候出错了。
重点来了
此时我注意到一个错误:
No database selected Query
意思是没有数据库被选择查询???
我明明选择了users表格,我严重怀疑是不是因为我用了问号占位符的问题!!
后来查了点资料,我想到是不是因为我数据库没有选择清楚?让idea不知道去查询哪个数据库?
解决方案:
于是我小心翼翼在users表前面加上了数据库名字。 写成了web01.users
再次启动Tomcat服务器,输入同样的内容。
- 跳转页面
- 回到idea:
测试代码中的两个打印结果都达到了预期,查询对象也出来了。
- 说明查询成功了~
小结:
- 这个错误好像并不是每个人在查询数据库数据的时候都会出现,但是既然我出现了,那就记录一下。
- 可能是IDEA中查询会出现这样找不到数据库的问题?或者是数据库没有连接配置好。不过,只要使用了"数据库名.表名",就一定不会出现查询不到的问题啦!~
更新:
emm,我发现了个问题,C3P0连接池的配置文件中,确实没有写具体的数据库名
所以导致之前会爆出java.sql.SQLException: No database selected Query
,因为我确实没有选择具体数据库嘛,很尴尬~
- 后来我配置文件中加进具体数据库名字后,问题就不复存在了
- 配置文件
- 查询语句
- 配置文件
不过,这就意味着,我们可以不在配置文件中写死需要查询的数据库,可以在sql语句中写清楚,也是可以的。虽然折腾了一番,但是这样查询某个数据库的时候,语句就有两种写法了~