*******刚结贴一问题,又来问一问题,如何这样?分好多的
1,我想随机自动生成一个用户id,6-9位的数字,相当于用户名
2, 以后生成的id不能和上次重复,我想可能有2种情况都可以,一种再插入之前判断,如果相同,则重新再生成,一种是每次都不一样,我不知道该怎么做?大家给个办法,谢谢!分多多的给!
[解决办法]
用随机数啊,重复几率很小的
[解决办法]
如果存在数据库里
可以用
if exists(select * from user_table where username = "新的用户名判断
")
[解决办法]
070814+3位随机数,这样的数字肯定不会重复的;
前面的日期通过服务器时间产生;
[解决办法]
用自增量。每次增加1。没有重复的!
[解决办法]
以 DateTime.Now.Ticks 为种子生成随机数
[解决办法]
学习哈
顶
[解决办法]
添加的时候每次还都要判断,个人觉得有点浪费资源了吧,这样的话请求等待的时间是不是长了阿。楼主考虑过“全球唯一码”吗?
这个是绝对不可能重复的,在添加的时候就不用去检查了。
个人观点,我一直这么认为的(也许更消耗资源也说不定),希望大家指出问题!谢谢!
[解决办法]
newid 不能滿足lz的要求 (6-9位的数字)
[解决办法]
既然不太可能重复,判断一下也不用多久吧......
个人感觉安全第一,多那么一下判断是必要的.万一重复了就麻烦了.
[解决办法]
问题是你怎么保存以前增加的?
得设计用户表结构,增加自增ID字段
[解决办法]
我写过类似的程序,用了一个循环判断的.这样就不可能重复了.
如果重复,一直生成新的随机数,直到出现没有重复为止.
[解决办法]
随机估计没什么问题的..
但用户id用来生成,没多大必要吧,你不如用自动增长列...
[解决办法]
既然是数字,为什么不考虑采用该字段自动增长列呢?
[解决办法]
不想重复
1 记录已经有的号 然后比较 显然这个方法效率上存在很大问题
2 根据时间 年月日十分秒产生数字 才是理想的不重复
[解决办法]
用日期加自动增长的几位数生成ID
[解决办法]
年月日时分秒+毫秒
[解决办法]
1、根据时间
2、newid()
3、自增序列
看着用呗
[解决办法]
严重同意BearRui(AK-47)采用“用日期加自动增长的几位数生成ID”的方法
[解决办法]
插入前先判断一下。要不了多长时间。
[解决办法]
还是判断一下的好.
[解决办法]
用数据库判断保证100%不重复,还是有几率发生重复的,建议使用数据库
[解决办法]
wxlwxlwxlwxl(好) ( ) 信誉:100
1、根据时间
2、newid()
3、自增序列
--------------------
同意
[解决办法]
up
[解决办法]
hao
[解决办法]
我写过类似的程序,用了一个循环判断的.这样就不可能重复了.
如果重复,一直生成新的随机数,直到出现没有重复为止.
=====================================================
很不负责任的程序员,你们数据量到一定多的时候要累死服务器的!
年月日时分秒+毫秒+(3到4位)随机数,这样重复的的可能性才很小,不过批量插入数据也会出现
年月日时分秒+毫秒+(3到4位)随机数 对其进行Md5然后取最后九位
[解决办法]
接分
[解决办法]
i++
[解决办法]
最简单的是自动增长
[解决办法]
我理解楼主是要让用户名既不重复 又要保证6-9位 可以这样解决 先定义一个自增列
如sqlsever中是 identity(1,1) 再定义一个触发器 再生成新纪录前(before insert) 让它加上一个6位的长整型数(如100000)最后保存到另一个字段中(也可以根据需要转化成字符串再保存) 就OK了
[解决办法]
it_mpf(请不要挑战我的耐心!) ( ) 信誉:100 2007-08-15 10:26:19 得分: 0
我写过类似的程序,用了一个循环判断的.这样就不可能重复了.
如果重复,一直生成新的随机数,直到出现没有重复为止.
=====================================================
很不负责任的程序员,你们数据量到一定多的时候要累死服务器的!
年月日时分秒+毫秒+(3到4位)随机数,这样重复的的可能性才很小,不过批量插入数据也会出现
年月日时分秒+毫秒+(3到4位)随机数 对其进行Md5然后取最后九位
================================
我那个程序也是要生成唯一的字符串,采用的是年月日时分秒+毫秒+3位随机数,然后最MD5码.
但你能保证,这样出来后,你的MD5肯定就是唯一没重复的吗? 我敢肯定,特定的条件下,肯定是有重复的.
搞个循环的目的就是防止重复. 只不过是在实际运行中,这个循环中的代码运行的几率几乎为0而已
[解决办法]
数据库判断一个值是否存在应该是很快的. 对服务器构不成负担.
[解决办法]
有个【伪随机数】的概念听说过迈?
关于生成随机数,有以下几个可以选择的方案:
1) System.Random
2) xdev所提到的System.Security.Cryptography.RNGCryptoServiceProvider
3) 直接调用Platform SDK中的CryptGenRandom()函数。
其中,和1)相比,2)和3)可以被作为真正的随机数来使用。
System.Random是最简单最常用的随机数发生器,如果用系统当前时间做种子,基本上可以做到“伪”随机。但是用System.Random得到的随机数的安全性是不高的,用户完全可以用一些方法根据已经生成的随机数序列预测出下一个随机数的值。在一些用到加密的场合,随机数序列可被预测会导致很严重的漏洞,例如曾经有扑克牌游戏网站由于使用了可以被预测的随机数发生器来实现随机发牌而导致的安全漏洞(参见http://www.cigital.com/news/gambling.html)。
如果需要更“随机”的随机数,应该使用System.Security.Cryptography.RNGCryptoServiceProvider或者Platform SDK中的CryptGenRandom()函数。System.Security.Cryptography.RNGCryptoServiceProvider是对System.Security.Cryptography.RandomNumberGenerator接口的一个实现,提供了获得可用于加密的随机数序列(cryptographically strong random values)的方法。
Platform SDK中的CryptGenRandom()函数也是一个非常好的随机数发生器,他在生成随机数的时候不单单用到了系统时间,还用到了Process ID、Thread ID以及大量系统信息。当然,CryptGenRandom()和RNGCryptoServiceProvider在提供更好的随机数的同时,不可避免的是速度方面的性能要逊于System.Random。
http://blog.csdn.net/wfdmd/archive/2006/07/13/913981.aspx
[解决办法]
以 DateTime.Now.Ticks 为种子生成随机数
if exists(select * from user_table where userid= "新的用户id判断
")
这两个不错
[解决办法]
自动递增+3位随机数