Blog Archive

Java prepared Statement get auto increment value after insert in MySQL

How to get auto generated keys from MySQL database?

 PreparedStatement stmt = conn.prepareStatement(sql, 
   PreparedStatement.RETURN_GENERATED_KEYS);
 //...

 ResultSet res = stmt.getGeneratedKeys();
 while (res.next())
 System.out.println("Generated key: " + res.getInt(1));

Sample Java source code to retrieve auto increment key values in MYSQL using JDBC prepared statement

    //insert new customer information and retrieve the generated customer id
    public String insertCustomer(String storeId, Customer customer) { 

        String customerId = "";
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String todaysDate = dateFormat.format(System.currentTimeMillis());
       
        try {      
            Context ctx = (Context) new InitialContext().lookup("java:comp/env");
            conn = ((DataSource) ctx.lookup("jdbc/mysql")).getConnection(); 

            sql = "INSERT into customer " +
            "(customer_id,first_name,last_name,email,active,store_id,address_id,create_date,last_update)" +
            " values(null,?,?,?,?,?,?,?,?)";
            stmt = conn.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
            stmt.setString(1,customer.getFirstName()); 
            stmt.setString(2,customer.getLastName());
            stmt.setString(3,customer.getEmail());
            stmt.setInt(4,customer.isActive()? 1: 0);
            stmt.setInt(5,Integer.parseInt(storeId)); 
            stmt.setInt(6,5);
            stmt.setString(7, todaysDate);
            stmt.setString(8, todaysDate);

            stmt.executeUpdate();

            // Using the getGeneratedKeys() method to retrieve
            // the key(s). In this case there is only one key column
            ResultSet keyResultSet = stmt.getGeneratedKeys();
            int newCustomerId = 0;
            if (keyResultSet.next()) {
                newCustomerId = (int) keyResultSet.getInt(1);
                customerId = String.valueOf(newCustomerId);
            }

            stmt.close();                                                             
            stmt = null;                                                              
            conn.close();                                                             
            conn = null;                                                   

        }                                                               
        catch(Exception e){

            System.out.println(e);

        }                      

        finally {                                                       
            
            if (stmt != null) {                                            
                try {                                                         
                    stmt.close();                                                
                } catch (SQLException sqlex) {                                
                    // ignore -- as we can't do anything about it here           
                }                                                             

                stmt = null;                                            
            }                                                        

            if (conn != null) {                                      
                try {                                                   
                    conn.close();                                          
                } catch (SQLException sqlex) {                          
                    // ignore -- as we can't do anything about it here     
                }                                                       

                conn = null;                                            
            }                                                        
        }              

        return customerId;

    }

12 comments :

  1. You are blessed!

    ReplyDelete
  2. I have answered thousands of questions from hundreds of MBA aspirants. While some of the questions are unique and context specific, a majority of questions (and their answers) are straight forward and informational in nature.Smart Custom Writing discounts for the quality writing services.

    ReplyDelete
  3. God bless you, thank you!!!
    I was trying something a long time to solve my problem, and it helped me a lot!

    ReplyDelete
  4. int keys=0;
    String url="jdbc:odbc:school";
    Connection con=DriverManager.getConnection(url,"sa","");
    //Statement smt=con.createStatement();
    PreparedStatement ps=con.prepareStatement("Insert into ClassName values(?,?)");

    ps.setString(1,txtsno.getText().trim());
    ps.setString(2,txtclassname.getText().trim());


    ps.executeUpdate();
    System.out.println("Class Name Saved.");
    ResultSet rs = ps.getGeneratedKeys();
    //int newCustomerId = 0;
    if (rs.next()) {
    keys = (int)rs.getInt(1);
    System.out.println(keys);


    But it gives the error below

    Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException
    at sun.jdbc.odbc.JdbcOdbcStatement.getGeneratedKeys(JdbcOdbcStatement.java:1460)
    at managementframe.btnsaveActionPerformed(managementframe.java:344)
    at managementframe.access$200(managementframe.java:26)
    at managementframe$4.actionPerformed(managementframe.java:140)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6041)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5806)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4413)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2440)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

    ReplyDelete
  5. A personal statement may be a supplement to your application that permits you to elaborate on your skills, experience, etc. Some personal statements raise you to reply to a awfully specific question, whereas different personal statements could raise a general question, which supplies you slightly additional leeway on what ought to be enclosed. business personal statements

    ReplyDelete
  6. A well-written medical school personal statement is your first initial "interview" when applying. Here are some important things to consider that make your admissions packet stand out from the rest. social work personal statement university

    ReplyDelete
  7. My the Good Lord bless you. You saved me.

    ReplyDelete
  8. Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại thái bình
    Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại bắc giang
    Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại thái nguyên
    Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại nam định
    Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại thanh hóa
    Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại hà nam
    Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại ninh bình
    Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại hà tĩnh
    Thuê Dịch vụ làm báo cáo tài chính giá rẻ tại nghệ an
    Thuê Dịch vụ làm báo cáo tài chính cuối năm
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận cầu giấy
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận tại từ liêm
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận thanh xuân
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận hà đông
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận long biên
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận đống đa
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận ba đình
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận tây hồ
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận hoàng mai
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại thanh trì
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận hoàn kiếm
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận hai bà trưng
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận thủ đức
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận bình thạnh
    Thuê Dịch vụ làm báo cáo tài chính cuối năm tại quận tân phú

    ReplyDelete
  9. what if 1000 concurrent users are inserting values at the time, will it returnh the exact auto key , or it can be duplicated....

    ReplyDelete