2012-05-09 4 views
0

私のテーブルでuser_idカラムを使用していて、新しいユーザが登録されるたびに1ずつインクリメントしていきます。しかしU10の後にuseIdはを増やさずにであり、その後に新しいユーザはそれぞれuserId U10を持ちます。私は、これを解決する方法、またはこれを達成するための他の方法を示唆してくださいMySqlを使用しています。useridの値が増加していません

以下

のuserId

   public int addUser(UserTO uto){ 
     int status=0; 
     PreparedStatement ps1=null; 
      PreparedStatement ps2=null; 
      PreparedStatement ps3=null; 
      Connection con=DBUtil.getMySqlConnection(); 
      String new_user_id=null;  
try{ 
    ps1=con.prepareStatement("select user_id from users order by user_id"); 
    ResultSet rs1=ps1.executeQuery(); 
    if(rs1.last()){ 
    int id=Integer.parseInt((rs1.getString(1).substring(1))); 
    new_user_id="U"+(id+1); 
      } 
    else{ 

     new_user_id="U1"; 

    } 
    uto.setUserid(new_user_id); 


     ps3=con.prepareStatement("insert into users values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 
    ps3.setString(1,uto.getUserid()); 
    ps3.setString(2,uto.getType()); 
    ps3.setString(3,uto.getUsername()); 
    ps3.setString(4,uto.getPassword()); 
    ps3.setString(5,uto.getFirstname()); 
    ps3.setString(6,uto.getMiddlename()); 
    ps3.setString(7,uto.getLastname()); 
    ps3.setString(8,uto.getPhone()); 
    ps3.setString(9,uto.getFax()); 
    ps3.setString(10,uto.getEmail()); 
    ps3.setString(11,uto.getJobtitle()); 
    ps3.setString(12,uto.getDepartment()); 
    ps3.setString(13,uto.getCompanyname()); 
    ps3.setString(14,uto.getLocation()); 
    ps3.setString(15,uto.getGender()); 
    ps3.setString(16,uto.getClientid()); 

    status=ps3.executeUpdate();   

    }catch(Exception e){ 
     e.printStackTrace(); 
    }finally{ 
     DBUtil.cleanup(ps1,con); 
     DBUtil.cleanup(ps2,con); 
     DBUtil.cleanup(ps3,con); 
    } 
return status; 

}

答えて

0

を生成するための私のコードで私はそれはあなたがこの行の文字列に整数を追加しているという事実とは何かを持っているかもしれないと思うけど

new_user_id="U"+(id+1); 

しかし、あなたが最初のクエリをスキップしてINSER内のuser_idを生成することがありました:「分からない、私は、javaについて多くを知りません次のTクエリは、すべてSQLを使用します。何かのように

INSERT INTO users VALUES(CONCAT("U", IFNULL(MAX((SELECT CAST(SUBSTRING(user_id, 2) AS UNSIGNED) FROM users)), 0) + 1), ?, ?, ?.... 

この場合、そのクエリにバインドする最初のパラメータを削除する必要があります。

なぜ私のプライマリIDにAUTO_INCREMENTを使用していないのか聞いていません。

関連する問題