“插入”随机数到mysql db

时间:2017-07-01 21:18:03

标签: java mysql

我正在创建像包裹机这样的程序。我已连接到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;
}

我该怎么做?

2 个答案:

答案 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数组以包含数字和字母(以及特殊字符可选)。
  • 随机获取 - 例如 - 来自6个随机索引的6个字符。 (注意,它可以是任何长度,不一定是6,根据数据库中的字段大小)。
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