生成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

解决方案 »

  1.   

    用随机数不就行吗
    然后生成1000个后用dateset保存再写到数据库就行了
      

  2.   

    int MyValue;
    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();这样写,是用函数随即生成一个随即数。。写法比较容易。你看看把
      

  3.   

    偶也来一段private void GetCard(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();
    }
    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;
    }
      

  4.   

    看MSDN中System.Security.Cryptography.RNGCryptoServiceProvider的说明