2017-07-01 76 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