gpt4 book ai didi

java - 使用java向mysql插入数据失败

转载 作者:行者123 更新时间:2023-12-01 00:35:57 25 4
gpt4 key购买 nike

我尝试使用java代码向mysql数据库中插入数据。我在数据库中建立了一个用户表。用户表有4个字段:id、用户名、密码和地址。

mysql> desc user;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(32) | YES | | NULL | |
| password | varchar(64) | YES | | NULL | |
| address | varchar(64) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+

这是我的java代码。

    Connection conn = null;
PreparedStatement stmt = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC";
String mysqlUserName = "root";
String mysqlPassword = "123456";
conn = DriverManager.getConnection(url, mysqlUserName, mysqlPassword);
String sql = "INSERT INTO user(username,password,address) VALUES (?,?,?)";
stmt = conn.prepareStatement(sql);
stmt.setString(1,"11dsa1");
stmt.setString(2,"111");
stmt.setString(3,"111");
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (conn!=null)
conn.close();
}catch (SQLException e){

}
try {
if (stmt!=null)
stmt.close();
}catch (SQLException e){

}
}

没有发生错误。但是我的数据库中没有数据。

mysql> select * from user; 
Empty set (0.01 sec)

但我可以通过 shell 插入数据。

mysql> insert into user(username,password,address) values ("aaa","aaa","aaa");
Query OK, 1 row affected (0.09 sec)

mysql> select * from user;
+----+----------+----------+---------+
| id | username | password | address |
+----+----------+----------+---------+
| 22 | aaa | aaa | aaa |
+----+----------+----------+---------+
1 row in set (0.00 sec)

但是 id 是 22 而不是 1 !

实际上我之前已经运行过这个 java 代码 21 次。我的理解是这段java代码可以将数据插入mysql,但立即从数据库中删除数据。我实在无法理解这种可笑的情况

最佳答案

你没有忘记实际执行语句吗?

在关闭它之前只需输入 stmt.executeUpdate()原来如此

String sql = "INSERT INTO user(username,password,address) VALUES (?,?,?)";
stmt = conn.prepareStatement(sql);
stmt.setString(1,"11dsa1");
stmt.setString(2,"111");
stmt.setString(3,"111");
stmt.executeUpdate()

我还建议您在 finally block 中关闭准备好的语句,或者如果您使用 Java 7+,请查看如何使用带有 try-with-resources 的准备语句 here .此外,如果您在 finally block 中关闭连接,为什么还要在 try block (最后一个命令)中关闭它?这绝对是多余的。

一般来说,保持代码整洁可以让您更好地阅读代码,从而更好地发现可能存在的问题。

关于java - 使用java向mysql插入数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50665087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com