大家好,欢迎来到IT知识分享网。
技术更新往往是比较快的,最近在学习JDBC时就因为学习资料比较旧导致出了不少小问题,我使用的mysql版本是8.0.x,mysql-connector版本8.0.x
应该改为Class.forName(“com.mysql.cj.jdbc.Driver”);新版本,系统可以自动加载,不用书写也可以
老版本url=”jdbc:mysql://localhost:3306/databaseName”
新版本url=”jdbc:mysql://localhost:3306/databaseName?serverTimezone=GMT”这是对时区的设置,不设置就抛错,同时这种写法会有警告,是要求你主动设置是否进行加密校验,即useSSL=false或者useSSL=true //url中的?之后的是属性设置
推荐url=”jdbc:mysql://localhost:3306/databaseName?useSSL=false&serverTimezone=GMT”
练习时写了一个程序抛出这个错误,错误指向url那一行,仔细与之前程序的程序对比发现没错,而且执行之前的程序也同样抛出了这个错,网上搜索有在url中添加属性allowPublicKeyRetrieval=true,运行后确实可行,但并不能解释我之前程序可以运行的程序为什么突然报错。后来发现是新版本中ResultSet默认是不可滚动的(行指针只可以用next()方法),而你可能使用了可滚动ResultSet的方法,如isFirst(),isLast(),previous(),relative(),absolute()方法
解决办法:要么不用这些方法,要么选择createStatement(int resultSetType, int resultSetConcurrency)方法而不是createStatement()方法,至于具体参数可以查API
- Class.forName(“com.mysql.jdbc.Driver”);老版本
- DriverManager.getConnection(url, userName,password);中
- Public Key Retrieval is not allowed错误
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/55439.html