Q1:无法使用Servlet无法访问SQL Server 2022
A1:首先检查连接池中的JDBC连接代码是否正确
其次检查是否安装并导入了相应的驱动器
安装:直接上网搜相应SQL Servlet的驱动器并安装到电脑中
导入:项目WebContent
WEB-INF
lib,右击然后点击Import
选择General目录下的File System并点击Next
点击Browse...选择相应SQL Servlet的驱动器的安装路径然后点击Finish
至此,相应SQL Servlet的驱动器导入完毕。但是这种方法存在许多不兼容问题(我整了半天也没成功),容易失败。
Q2:不兼容问题
A2:世上无难事,只要肯放弃,面对不兼容问题我们就可以选择转用MySQL(老师教的。。。)
一下是我参考的MySQL的安装方法:MySQL数据库下载及安装教程(最最新版)_mysql下载安装-CSDN博客
PS:安装过程中会有一些不同的步骤,可以先往下看(具体原因我也不知道为啥,但是安装得非常顺利)
Q3:报错java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
A3:这个主要还是权限问题
首先还是要检查一下连接池中的JDBC连接代码是否正确(具体代码如下,是已经解决了Q3,Q4,Q5的最终版)
//servlet初始化时执行,完成了两步工作加载驱动和建立连接
String driver = "com.mysql.cj.jdbc.Driver";//mysql驱动名称
String dburl = "jdbc:mysql://127.0.0.1:3306/webstore?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
//jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
String username = "root";
String password = "你的登陆密码";
其次检查userName和Password是否正确(我刚开始用的是我自己后来创建的数据库用户和密码就无法连接成功,后来改成用户root的名字和密码就可以了)
Q4:报错The last packet sent successfully to the server was 0 milliseconds ago.
A4:将url地址中的useSSL=true改成useSSL=false(我刚开始看课本上写的是useSSL=true,上述连接池版本已经是改正过的最终版)
Q5:报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
A5:出现了乱码,我们直接考虑字节编码的问题,于是我们在连接池中添加上语句:&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
将乱码的字节编码转为UTF-8编码(上述连接池版本已经是改正过的最终版)
PS
进行查询测试查不出东西可能是表中没有数据,可以先添加一条数据再进行尝试;
在MySQL中句末要加分号表示语句结束才能执行语句(这点与SQL Server不同)
以上,就是我遇到的所有问题,供大家参考
特别鸣谢:洛枭大大(感谢大佬的指点~~)