生成20位密码的存储过程,再写一个存储过程循环调用10000次就可以了。
CREATE PROCEDURE P_GetSerialNo
@SerialNO varchar(20) output AS
BEGIN
declare @newid varchar(36)
declare @i int
declare @j int
declare @length int
declare @strBlock varchar(5)
declare @strMainBlock varchar(20)set @strBlock='';
set @strMainBlock='';
set @j=1;
while @j<=4
begin
select @newid=convert(varchar(36),newid())
set @length=len(@newid)
set @i=1
set @strBlock='';
while @i<=@length
begin
if(substring(@newid,@i,1)>='0' and substring(@newid,@i,1)<='9')
set @strBlock=@strBlock + substring(@newid,@i,1)
if len(@strBlock)=5
break
set @i=@i+1
end
if len(@strBlock)=5
begin
set @strMainBlock=@strMainBlock + @strBlock
set @j=@j+1
end
end
set @SerialNO = @strMainBlock
END
GO
CREATE PROCEDURE P_GetSerialNo
@SerialNO varchar(20) output AS
BEGIN
declare @newid varchar(36)
declare @i int
declare @j int
declare @length int
declare @strBlock varchar(5)
declare @strMainBlock varchar(20)set @strBlock='';
set @strMainBlock='';
set @j=1;
while @j<=4
begin
select @newid=convert(varchar(36),newid())
set @length=len(@newid)
set @i=1
set @strBlock='';
while @i<=@length
begin
if(substring(@newid,@i,1)>='0' and substring(@newid,@i,1)<='9')
set @strBlock=@strBlock + substring(@newid,@i,1)
if len(@strBlock)=5
break
set @i=@i+1
end
if len(@strBlock)=5
begin
set @strMainBlock=@strMainBlock + @strBlock
set @j=@j+1
end
end
set @SerialNO = @strMainBlock
END
GO
然后生成1000个后用dateset保存再写到数据库就行了
Random c=new Random();
MyValue = c.Next(10000);
string str="insert into adresourse(locationid) VALUES (+"MyValue"+")";
myconnection.Open();
System.Data.SqlClient.SqlCommand comm =new System.Data.SqlClient.SqlCommand(str,myconnection);
try
{
comm.ExecuteNonQuery();
DataGrid1.EditItemIndex = -1;}
catch{}
myconnection.Close();这样写,是用函数随即生成一个随即数。。写法比较容易。你看看把
{
//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();
}
myCommand.Connection.Close(); }
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;
}