我需要有效地将 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/