实际上没有插入MySQL,但自动增量字段正在增加?

Bla*_*nky 0 java mysql jdbc

我真的不知道发生了什么.我是Java新手,对MySQL很新.

我试图用Java将行插入MySQL数据库.它不会抛出任何异常,当我打印出来时,SELECT *它会显示我更新的行.但是当我再次运行程序或在Workbench中运行时,这些行并没有停留.

其中一列(pk)是自动递增的字段.此字段正在递增,但数据不存在.

当我通过Workbench添加数据时,它会坚持下去,我可以在我的Java程序中检索它SELECT *.只有当我通过下面的代码添加它时,数据才会消失.

这是代码.我按照教程:

import java.sql.*;

public class SaveMap {  
public static boolean MapSave(String mapName) {
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;

    String url = "jdbc:mysql://127.0.0.1:3306/";
    String db = "game_Maps";
    String driver = "com.mysql.jdbc.Driver";
    String user = "root";
    String pass = "pass";

    try {
        Class.forName(driver);
        con = DriverManager.getConnection(url + db, user, pass);
        con.setAutoCommit(false);

        st = con.createStatement();

        System.out.println(st.executeUpdate("INSERT INTO Maps (mapName, mapSize) VALUES('DB Test', 5)"));
        st.executeBatch();



        String sql = "SELECT * FROM Maps";
        rs = st.executeQuery(sql);

        System.out.println("No \t Name");
        while(rs.next()){
            System.out.println(rs.getString(1) + " \t");
            System.out.println(rs.getString(2) + " \t");
            System.out.println(rs.getString(3) + " \t");
        }

        rs.close();
        st.close();
        con.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return true;
}
}
Run Code Online (Sandbox Code Playgroud)

Cor*_*bin 5

这是因为您将auto commit设置为false(con.setAutoCommit(false);),但未提交事务.

非注释插入不存储行,但它们会增加自动增量字段.

您需要在事务结束后为行保留事务.