我正在创建像包裹机这样的程序。我已连接到mysql db。 如你所见,我有字段“final int orderPassword”。我想通过我在本主题末尾提出的方法自动生成它。
public static void post() throws Exception{
final int parcelID = 2;
final int clientMPNumber = 777777777;
final int orderPassword = 1234;
try{
Connection con = getConnection();
PreparedStatement posted = con.prepareStatement("INSERT INTO Parcels.Orders (parcelID, clientMPNumber, orderPassword) VALUES ('"+parcelID+"', '"+clientMPNumber+"', '"+orderPassword+"')");
posted.executeUpdate();
}catch(Exception e){System.out.println(e);}
finally{
System.out.println("Insert completed");
}
}
下面是我想要的方法,而不是“final int orderPassword”。
public static int generatePass(){
Random generator = new Random();
int orderPassword = generator.nextInt(9000)+1000;
return orderPassword;
}
我该怎么做?
答案 0 :(得分:1)
鉴于您的方法属于同一类oder包,只需更改
即可final int orderPassword = 1234;
到
final int orderPassword = generatePass();
备注:对于更好的随机密码,您可以使用某些库,如https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/RandomStringUtils.html
答案 1 :(得分:0)
我建议使用更安全的密码,特别是String
密码。
char
数组以包含数字和字母(以及特殊字符可选)。public static String generatePassword(int length){
char source[] = "A0b1C2d3E4f5G6h7I8j9K0l1M2n3O4p5Q6r7S8t9U0v1W2x3Y4z5".toCharArray();
Random generator = new Random();
String password ="";
for(int i=0; i<length; i++){
password += source[generator.nextInt(source.length)];
}
return password;
}
要使用它,你只需:
String orderPassword = generatePassword(6); // of length 6 for example
输出样本:
36Ynv3
13Kvp5
4A4117
0zlSS3
vr5625