簡體   English   中英

如何使用 java 添加自動增量值?

[英]How do I add the auto increment values with java?

我在 Mysql 使用創建了一個表

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

並使用 java 通過我的 GUI 應用程序添加值:

我使用以下方法將值添加到我的數據庫中:

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);}  
              
    }

一切正常

但是 id 是 auto_increment 並且我不需要在添加其他列值時向 id 添加值。

我不能像那樣添加,同時通過 java 添加,就像只添加我們一樣,ps 列和 id 將自動遞增。

有沒有不傳遞參數就可以添加數據的方法?

從 sql 語句中刪除列id

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

並且不要在准備好的語句中為它設置任何值,所以刪除這一行:

preparedStmt.setInt(1, id++); 

idauto_inrement ,因此其值將由 MySql 設置。
當然將其他行的索引更改為 1 和 2:

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

您可能會插入沒有 ID 的數據,因為它將從 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);}           
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM