No database selected Query:解决数据库查询中使用问号占位符查询不到正确数据的问题

项目场景:

数据库中有数据,却查询不到。报错内容为: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语句中写清楚,也是可以的。虽然折腾了一番,但是这样查询某个数据库的时候,语句就有两种写法了~

猜你喜欢

转载自blog.csdn.net/weixin_43876778/article/details/114143918