简体   繁体   中英

How do I add the auto increment values with java?

I created a table in Mysql using

Create table 
(
 id int auto_increment,
 us varchar(100),
 ps varchar(1000)
); 

And used java for adding values thru my GUI application:

I used the following method to add values into my database:

public static void Mysql(String u, String p) throws NoSuchAlgorithmException, InvalidKeySpecException
    {
        String hashpass=passhash(p);//throws declaration for this statement
        try{  
            Class.forName("com.mysql.cj.jdbc.Driver");  
            Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bs","root","root");   
            String query = " insert into login (id,us,ps)"
                    + " values (?,?, ?)";  
            Statement stmt=con.createStatement();  
            ResultSet rs=stmt.executeQuery("select * from login"); 
            int id=0;
            while(rs.next())
            {
                id= rs.getInt(1);
            }
            PreparedStatement preparedStmt = con.prepareStatement(query);
            preparedStmt.setInt(1, id++); //I don't want this method because id is auto increment
            preparedStmt.setString(2,u);
            preparedStmt.setString(3,hashpass);
            preparedStmt.execute();
            con.close();  
            }catch(Exception e){ System.out.println(e);}  
              
    }

Everything works fine

But the id is the auto_increment and I don't need to add value to id while adding other column values.

I can't add like that while adding thru java like only adding us, ps columns and the id will be automatically incremented.

Are there any methods to add data without passing the parameters?

Remove the column id from the sql statement:

String query = "insert into login (us, ps) values (?, ?)";

and don't set any value for it in the prepared statement, so remove this line:

preparedStmt.setInt(1, id++); 

The column id is auto_inrement so its value will be set by MySql.
Of course change the indices of the other lines to 1 and 2:

preparedStmt.setString(1,u);
preparedStmt.setString(2,hashpass);

You might insert data without ID as it will be auto-generated from SQL

public static void Mysql(String u,String p) throws NoSuchAlgorithmException, InvalidKeySpecException {
    String hashpass=passhash(p);
    try{  
        Class.forName("com.mysql.cj.jdbc.Driver");  
        Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bs","root","root");   
        String query = " insert into login (us,ps) values (?, ?)"; // CHECK HERE  
        Statement stmt=con.createStatement();  
        ResultSet rs=stmt.executeQuery("select * from login"); 
        PreparedStatement preparedStmt = con.prepareStatement(query);
        preparedStmt.setString(1,u);
        preparedStmt.setString(2,hashpass);
        preparedStmt.execute();
        con.close();  
    }catch(Exception e){
        System.out.println(e);}           
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM