2012-07-10 39 views
0

我需要在我的MySQL數據庫中存儲公鑰。我有以下幾種:如何使用Java存儲公鑰mysql?

rsaModulus=rsaPk.getModulus(); 

方法getModulus()返回BigInt。但是,當我使用preparedstatement爲了在表格中插入值時,我找不到執行該操作的適當方法(即類似於toString,toInt)。我需要檢索這個公鑰並在稍後進行一些數學計算。這就是爲什麼,我不認爲將它存儲爲String將是一個好主意。此外,toLong沒有工作,因爲數據庫中的字段被定義爲BigInt。有沒有解決這個問題的方法?

回答

0

文件,如密鑰和證書一般存儲爲咬合數組。 這可以用blob列表完成。

Mysql的文檔顯示有關這些Java類型和mysql型關係: http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-type-conversions.html

如果你能得到你的公鑰作爲一個byte [],這樣使用的示例代碼:

... 
    InputStream is = PapelServiceTest.class.getResourceAsStream("MY_FILE_HERE"); 
    byte[] pkBytes = IOUtils.toByteArray(is); 

    String query = "INSERT INTO my_table (my_key_col) VALUES (?)"; 
    PreparedStatement pstat = conn.prepareStatement(query); 
    pstat.setBytes(1, pkBytes); 
    pstat.execute(); 
... 
+0

哪更好,將它作爲Varbibnary或longblob存儲在DB中? – 2012-07-11 03:23:32

+0

'pstat.setString(1,pkBytes);'不起作用。 pkBytes是字節數組,而不是String。 – 2012-07-11 03:35:21

+0

我不知道你爲什麼使用輸入流。如果我不想使用文件怎麼辦?我將值存儲在變量中,並希望直接將其存儲爲Blob。我不能這樣做嗎? – 2012-07-11 04:24:46

相關問題