C# 想做个随机生成六位数工号

求个没睡觉的C#高手啊。想做个随机生成六位数工号,就是一个button单击后,生成一个六位数字的工号,该工号需没有跟数据库里已有的工号重复才可以被使用,否则重新生成工号。... 求个没睡觉的C#高手啊。想做个随机生成六位数工号,就是一个button单击后,生成一个六位数字的工号,该工号需没有跟数据库里已有的工号重复才可以被使用,否则重新生成工号。求具体代码。。谢谢米娜 展开
 我来答
shuibiyy
推荐于2017-09-25 · TA获得超过1724个赞
知道小有建树答主
回答量:446
采纳率:100%
帮助的人:144万
展开全部
private int GetID()
{
Random rd = new Random();
int num = rd.Next(100000, 1000000);
string strSql = " select count(*) from 表 where ID=" + num.ToString() + "";
//查数据
if(数据里存在)
{
GetID();
}
return num;

}
追问
行不通,提示GetID() 没有返回值,所以if里面不能调用自身函数。。。。

话说,给个测试通过的来试试可好。谢谢,感激不尽
追答

话说这个就是可以的, 测试如下(如数组代替数据库测试):

 class Program
    {
        int[] arr = { 225000, 200000, 600005, 144736, 444489 };
    
        static void Main(string[] args)
        {
            Program p = new Program();
            int result = p.GetID();
            Console.WriteLine(result);
            Console.ReadKey();
        }
        private   int GetID()
        {
            Random rd = new Random();
            int num = rd.Next(100000, 1000000);
          //  string strSql = " select count(*) from 表 where ID=" + num.ToString() + "";
            //查数据
            if (arr.Contains(num))
            {
                GetID();
            }
            return num;
            
        }
    }

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2014-09-15 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7874万
展开全部
生成不重复的随机数消耗的计算量还是不小的,因为6位随机数的重复概率还是有的,然后就要去查询一次数据库,再生成,而且理论上也不好算出其最多多少次循环就一定能算出一个这样的随机数。假如你一定要这样生成,建议你放到存储过程里完成,这样就避免了程序与数据库的交互,节省了时间。
现在你的数据库还能改动吗?如果能,请使用GUID作为数据库的主键,那样C#或者数据库都很容易生成,而且理论上不需要查询数据库就能保证其唯一性。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
罗田爷们
2018-07-07 · TA获得超过182个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:47万
展开全部
var A=new Random(Guid.NewGuid().GetHashCode()).Next(100000, 999999).ToString();
生成(100000-999999)范围内6位数字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式