C# 想做个随机生成六位数工号
求个没睡觉的C#高手啊。想做个随机生成六位数工号,就是一个button单击后,生成一个六位数字的工号,该工号需没有跟数据库里已有的工号重复才可以被使用,否则重新生成工号。...
求个没睡觉的C#高手啊。想做个随机生成六位数工号,就是一个button单击后,生成一个六位数字的工号,该工号需没有跟数据库里已有的工号重复才可以被使用,否则重新生成工号。求具体代码。。谢谢米娜
展开
3个回答
展开全部
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;
}
{
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;
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
生成不重复的随机数消耗的计算量还是不小的,因为6位随机数的重复概率还是有的,然后就要去查询一次数据库,再生成,而且理论上也不好算出其最多多少次循环就一定能算出一个这样的随机数。假如你一定要这样生成,建议你放到存储过程里完成,这样就避免了程序与数据库的交互,节省了时间。
现在你的数据库还能改动吗?如果能,请使用GUID作为数据库的主键,那样C#或者数据库都很容易生成,而且理论上不需要查询数据库就能保证其唯一性。
现在你的数据库还能改动吗?如果能,请使用GUID作为数据库的主键,那样C#或者数据库都很容易生成,而且理论上不需要查询数据库就能保证其唯一性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var A=new Random(Guid.NewGuid().GetHashCode()).Next(100000, 999999).ToString();
生成(100000-999999)范围内6位数字
生成(100000-999999)范围内6位数字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询