MySQL实现注册时随机生成数字id,类似于注册qq时随机生成qq号
首先根据长度需求通过java的随机函数java.util.Random生成随机数,如希望得到5位随机id,则可以使用如下语句
int r = (new Random()).nextInt()%89999;
int id = 10000 + Math.abs(r);
第二步,检查数据库内是否已经存在该id。可以通过查询该id是否有结果来判断。如果不存在则直接插入,否则重新生成随机数。
以下为完整代码:
public void reg(String username, String password){
Connection conn = null;
PreparedStatement ptmt = null;
ResultSet rs = null;
try{
conn = DBHelper.getConnection();
while(true){
int r = (new Random()).nextInt()%89999;
int id = 10000 + Math.abs(r);
String sql = "select * from employee where id=?;";
ptmt = conn.prepareStatement(sql);
ptmt.setInt(1, id);
rs = ptmt.executeQuery();
if(!rs.next()){
sql = "insert into employee(id, employeename, psw) value"
+ "(?,?,?)";
ptmt = conn.prepareStatement(sql);
ptmt.setInt(1, id);
ptmt.setString(2, username);
ptmt.setString(3, password);
ptmt.execute();
break;
}
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
if(ptmt != null){
try{
ptmt.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
if(rs != null){
try{
rs.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}