为什么两个 类似 Connection conn = DriverManager.getConnection(),第二个会执行错误

eisldkw 2020-03-06 10:55:22
为什么两个 类似 Connection conn = DriverManager.getConnection(),第二个会执行错误,具体代码如下:


try (

Connection conn = DriverManager.getConnection(url, user, pass); // 使用Connection来创建一个Statment对象
Statement stmt = conn.createStatement()
) {

String sql;

sql = "select user from user where user= 'mima_1aadb_1nb_2bbb' ";
//1、以上代码查询数据库中是否有一名为mima_1aadb_1nb_2bbb 的 user


ResultSet relt = stmt.executeQuery(sql);

if (!(relt.next())) {
sql = "create user 'mima_1aadb_1nb_2bbb'@'%' identified by '123' ";
// 2、 如果没有 mima_1aadb_1nb_2bbb 则创建该 user

stmt.executeUpdate(sql);
} else {
sql = "drop user mima_1aadb_1nb_2bbb "; // 3、 如果有则先删除 再 创建该 mima_1aadb_1nb_2bbb 帐户
stmt.executeUpdate(sql);
sql = "create user 'mima_1aadb_1nb_2bbb '@'%' identified by '123' ";
stmt.executeUpdate(sql);
}

sql = "grant select, alter ,delete, update , insert ,lock tables, show view on dbsj_nb_yj190801.* to 'mima_1aadb_1nb_2bbb '@'%' "; // 4、给该 帐户 授权
stmt.executeUpdate(sql);

sql = "select user from user where user='mima_1aadb_1nb_2bbb'";
relt = stmt.executeQuery(sql);
if (relt.next()) {


url1 = "jdbc:mysql://localhost:3306/dbsj_nb_yj190801?useSSL=false&serverTimezone=UTC";

pass1="123";
Connection conn1 = DriverManager.getConnection(url1, "mima_1aadb_1nb_2bbb", pass1);
// 5、执行到此处发生错误,错误代码不明,请问是何原因?

}


以上代码 中 dbsj_nb_yj190801 数据库存在 ,dbsj_nb_yj190801 建好之后,曾在MYSQL 命令行代码下 进行登录 测试,可正常登录

请问为什么 执行到5 处就出现错误。谢谢大家。
...全文
632 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
eisldkw 2020-03-06
  • 打赏
  • 举报
回复
引用 3 楼 qq_39936465 的回复:
[quote=引用 2 楼 eisldkw 的回复:] 应该跟资源 有没有释放没有直接的关系吧?
你的新账号的权限没有刷新吧 ,修改权限以后需要刷新权限 flush privileges[/quote] 我这样试过 sql = "grant select, alter ,delete, update , insert ,lock tables, show view on dbsj_nb_yj190801.* to 'mima_1aadb_1nb_2bbb '@'%' "; // 4、给该 帐户 授权 stmt.executeUpdate(sql); sql = "select user from user where user='mima_1aadb_1nb_2bbb'"; relt = stmt.executeQuery(sql); relt = stmt.executeQuery("flush privileges"); 不管用呀
qq_39936465 2020-03-06
  • 打赏
  • 举报
回复
引用 2 楼 eisldkw 的回复:
应该跟资源 有没有释放没有直接的关系吧?
你的新账号的权限没有刷新吧 ,修改权限以后需要刷新权限 flush privileges
eisldkw 2020-03-06
  • 打赏
  • 举报
回复
引用 1 楼 fei得更高 的回复:
可能是资源没有释放
非常感谢,但是,我将5处的代码 换成 try 下面 紧临的代码 Connection conn3 = DriverManager.getConnection(url, user, pass); // conn改为conn3 是可以正常运行的。 应该跟资源 有没有释放没有直接的关系吧?
fei得更高 2020-03-06
  • 打赏
  • 举报
回复
可能是资源没有释放
qq_39936465 2020-03-06
  • 打赏
  • 举报
回复
引用 8 楼 eisldkw 的回复:
非常感谢,这个帐户不是在 user表和db表中设置权限吗,没有 “具有mysql管理员权限” 这一说法呀,它没有角色设置或组设置的功能呀。
我是说你用于链接数据库时所用的账号。也就是conn时的user的权限。
eisldkw 2020-03-06
  • 打赏
  • 举报
回复
引用 7 楼 qq_39936465 的回复:
[quote=引用 6 楼 eisldkw 的回复:] 不管用,试过了。
你首先要确定,你原来链接用的账号密码具有mysql管理员权限。[/quote] 非常感谢,这个帐户不是在 user表和db表中设置权限吗,没有 “具有mysql管理员权限” 这一说法呀,它没有角色设置或组设置的功能呀。
qq_39936465 2020-03-06
  • 打赏
  • 举报
回复
引用 6 楼 eisldkw 的回复:
不管用,试过了。
你首先要确定,你原来链接用的账号密码具有mysql管理员权限。
eisldkw 2020-03-06
  • 打赏
  • 举报
回复
引用 5 楼 qq_39936465 的回复:
[quote=引用 4 楼 eisldkw 的回复:] 我这样试过 sql = "grant select, alter ,delete, update , insert ,lock tables, show view on dbsj_nb_yj190801.* to 'mima_1aadb_1nb_2bbb '@'%' "; // 4、给该 帐户 授权 stmt.executeUpdate(sql); sql = "select user from user where user='mima_1aadb_1nb_2bbb'"; relt = stmt.executeQuery(sql); relt = stmt.executeQuery("flush privileges"); 不管用呀
关闭链接后重新开应该就可以了。[/quote] 不管用,试过了。
qq_39936465 2020-03-06
  • 打赏
  • 举报
回复
引用 4 楼 eisldkw 的回复:
我这样试过 sql = "grant select, alter ,delete, update , insert ,lock tables, show view on dbsj_nb_yj190801.* to 'mima_1aadb_1nb_2bbb '@'%' "; // 4、给该 帐户 授权 stmt.executeUpdate(sql); sql = "select user from user where user='mima_1aadb_1nb_2bbb'"; relt = stmt.executeQuery(sql); relt = stmt.executeQuery("flush privileges"); 不管用呀
关闭链接后重新开应该就可以了。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧