2014-12-06 319 views
0

我在mysql數據庫表中保存UUID令牌。在我java程序的下一章節,我需要做一個這樣的查詢如何將UUID值保存在mysql數據庫中

String sql = "SELECT expiray_time FROM recover_password WHERE token = '"+token+"'"; 

token之前產生UUID值,並將其保存在mysql表。

但是當我運行我的程序時出現錯誤,說EmptyResultDataAccessException。我想我得到了這個錯誤,因爲UUID標記值與生成並插入到數據庫時的表單形式不同。現在形式不同。

我已將UUID保存在我的數據庫中,作爲text類型的值。

我的問題是

  1. 它是否正確保存在text數據庫類型UUID值?
  2. 如何將生成的標記值與數據庫中的標記值進行比較?
  3. 當插入數據庫時​​,UUID值是否被散列或加密爲不同的格式? 謝謝!

回答

2
  1. 如果你的UUID將不超過255個字符,那麼它的最優選使用VARCHAR。
  2. 使用MySQL的STRCMP()函數進行字符串比較。 http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#function_strcmp
+0

我在問,當它被保存在數據庫中時是否轉換爲不同的形式? – vigamage 2014-12-06 15:35:54

+0

如果您按照原樣插入UUID,那麼它將僅以純文本格式顯示。如果你想加密它,你可以使用內建的MySQL散列函數,如SHA1(),MD5()等。完整的引用可以在這裏找到:[link](http://dev.mysql.com/doc /refman/5.5/en/encryption-functions.html) – 2014-12-06 15:49:26

+0

不,問題是這是我生成的一些數字和文本,但是當我查看數據庫時,它是完全不同的 – vigamage 2014-12-06 16:00:47