如下: long lngOldNum=0; long lngNewNum=0; for(int i=0;i<500;i++) { do { lngNewNum=(int)DateIime.Now.Ticks; }while(lngNewNum==lngOldNum); //lngNewNum为新的号,在此转换成10位或8位的串 lngOldNum=lngNewNum; }
用ArrayList ArrayList list = new ArrayList(); int num = 你产生的数。 list.Add(num) while(list.Contains(num) { num = 继续生成数; }
我想随机密码不会也用数字吧,你可以用字母数字结合. char[] a=new Char[8]; Random rnd = new Random(); char[] a=new Char[8]; for (int i = 0; i < 8; i++) { a[i]=Convert.ToChar(rnd.Next(10,100)); //这里10,100你可以指定为ASCII码表中的对应范围,如只取字母,数字,或数字字母同取. 具体范围你去查一下ASCII码表吧.然后用Convert.ToChar轮换为数字对应的ASCII码 } 写入数据库时再检查一下有无重复记录,虽然可能性很少,但也需要试试
long lngOldNum=0;
long lngNewNum=0;
for(int i=0;i<500;i++)
{
do
{
lngNewNum=(int)DateIime.Now.Ticks;
}while(lngNewNum==lngOldNum);
//lngNewNum为新的号,在此转换成10位或8位的串
lngOldNum=lngNewNum;
}
ArrayList list = new ArrayList();
int num = 你产生的数。
list.Add(num)
while(list.Contains(num)
{
num = 继续生成数;
}
char[] a=new Char[8];
Random rnd = new Random();
char[] a=new Char[8];
for (int i = 0; i < 8; i++)
{
a[i]=Convert.ToChar(rnd.Next(10,100));
//这里10,100你可以指定为ASCII码表中的对应范围,如只取字母,数字,或数字字母同取.
具体范围你去查一下ASCII码表吧.然后用Convert.ToChar轮换为数字对应的ASCII码
}
写入数据库时再检查一下有无重复记录,虽然可能性很少,但也需要试试
private void getpass(object sender, System.EventArgs e)
{
//this.Message.Text=buildRndCodeAll(8);
SqlConnection conn=new SqlConnection();
MyDb dbconn=new MyDb();
dbconn.ConnectSQL(conn);
SqlCommand myCommand=new SqlCommand();
myCommand.CommandTimeout = 20;
myCommand.Connection=conn; string lngOldNum="";
string lngNewNum="";
string AllNum=",";
string RngPass="";
myCommand.CommandText = @"insert into [cards]([card],[pass]) values(@card,@pass)";
myCommand.Parameters.Add(new SqlParameter("@card",SqlDbType.Char,100));
myCommand.Parameters.Add(new SqlParameter("@pass",SqlDbType.Char,100));
for(int i=0;i<500;i++)
{
do
{
lngNewNum="01"+buildRndCodeAll(8);
RngPass=buildRndCodeAll(8);
}while(lngNewNum==lngOldNum&&AllNum.IndexOf(",lngNewNum,")==-1);
this.Message.Text+="<br>卡号"+lngNewNum+"密码"+RngPass;
lngOldNum=lngNewNum;
AllNum+=lngNewNum+",";
myCommand.Parameters["@card"].Value = lngNewNum;
myCommand.Parameters["@pass"].Value = RngPass;
myCommand.ExecuteNonQuery();
} }
private static int getNewSeed()
{
byte[] rndBytes = new byte[4];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(rndBytes);
return BitConverter.ToInt32(rndBytes,0);
}
private static string buildRndCodeAll1(int strLen)
{
System.Random RandomObj = new System.Random(getNewSeed());
string buildRndCodeReturn = null;
for(int i=0; i<strLen; i++)
{
buildRndCodeReturn += (char)RandomObj.Next(33,125);
}
return buildRndCodeReturn;
}
private static string buildRndCodeAll(int strLen)
{
System.Random RandomObj = new System.Random(getNewSeed());
string buildRndCodeReturn = null;
for(int i=0; i<strLen; i++)
{
buildRndCodeReturn += RandomObj.Next(1,9);
}
return buildRndCodeReturn;
}