asp.net - 最有效的方法...独特的随机字符串

标签 asp.net database random unique

我需要有效地将 5 个字符的随机字符串插入数据库,同时还要确保它是唯一的。生成随机字符串不是问题,但目前我正在做的是生成字符串,然后检查数据库是否已经存在...如果存在,我将重新开始。

有没有更有效的方法来完成这个过程?

请注意,我不想使用 GUID 或任何其他超过 5 个字符的东西......我必须坚持使用 5 个字符。

PS:我不认为这有什么区别,但我的字符串都是区分大小写的。

这是“随机字符串”部分

    Public Function GetRandomNumbers(ByVal numChars As Integer) As String
    Dim chars As String() = { _
     "A", "B", "C", "D", "E", "F", _
     "G", "H", "I", "J", "K", "L", _
     "M", "N", "O", "P", "Q", "R", _
     "S", "T", "U", "V", "W", "X", _
     "Y", "Z", "0", "1", "2", "3", _
     "4", "5", "6", "7", "8", "9", _
     "a", "b", "c", "d", "e", "f", _
     "g", "h", "i", "j", "k", "l", _
     "m", "n", "o", "p", "q", "r", _
     "s", "t", "u", "v", "w", "x", _
     "y", "z"}
    Dim rnd As New Random()
    Dim random As String = String.Empty
    Dim i As Integer = 0
    While i < numChars
        random += chars(rnd.[Next](0, 62))
        System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
    End While
    Return random
End Function

最佳答案

创建一个表,其中包含大量按顺序添加的 5 个字符的字符串(因此它们是唯一的),并将 GUID 作为它们的主键。添加一列以指示它们是否被使用。

当您需要一个新号码时,您从池中选择前 1 个,按 guid 排序(因此它变成随机的),并将结果设置为“已花费”。

关于asp.net - 最有效的方法...独特的随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1513911/

相关文章:

c# - 创建一个json格式的对象

c# - 方法 "ToString"没有重载需要 1 个参数

asp.net - 在 ASP.NET 中使用 System.Web.Caching.Cache 类的问题

javascript - 如何在 asp.net 中显示下拉列表的所有项目?

mysql - 使用 join 和 group by 进行复杂的选择查询

database - pg_restore 错误 : role XXX does not exist

database - ORA-06553 字符集名称无法识别

python - 如何使用字符编码在文件中存储随机字节?

Python 为随机选择的单词定义一个 Action

java - 带图形的循环 - 生成图形时的错误