2017-07-01 34 views
-1

我正在创建像包裹机一样的程序。我已连接到MySQL数据库。 正如你所看到的,我有字段“final int orderPassword”。我想通过我在本主题结尾处添加的方法自动生成它。“insert into”随机数到mysql db

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

我该怎么办?

+1

如若'orderPassword'是唯一的? – Yahya

+0

您还应该使用'PreparedStatement'的优点,并通过set-methods设置值。一个PreparedStatement不应该使用查询中的值创建 –

回答

0
一些库

我建议拥有更安全的密码,尤其是密码String

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