asp.net生成批量数据并保存至数据库表中[数据库]

作者: unvs 分类: ASP.NET 发布时间: 2011-03-15 21:52 ė16,701 views 61条评论

原理很简单:首先,调用类或函数生成批量数据,然后,通过后台方法将数据批量输入到数据库中

下面是学习总结的方法:

一、通过类文件,产生随机数据

C# Code:

public class MyRandom
{
    private string _strin;
    private string _strout;
    private Random _rnd;

    public MyRandom(string strin)
    {
        _rnd = new Random(System.Environment.TickCount);//System.Environment.TickCount表示系统启动以来的毫秒数
        或者:_rmd = new Random(System.Guid.NewGuid().GetHashCode());

       _strin = strin;
    }

    private string GetOneRandomNum(string strformat)
    {
        string strtemp;
        switch (strformat)
        {
            case "*":
                {
                    int itmp = _rnd.Next(36);
                    if (itmp < 10)
                        strtemp = _rnd.Next(10).ToString();
                    else
                        strtemp = Convert.ToChar(_rnd.Next(26) + ‘A’).ToString();
                    break;
                }
            case "#":
                {
                    strtemp = _rnd.Next(10).ToString();
                    break;
                }
            case "$":
                {
                    strtemp = Convert.ToChar(_rnd.Next(26) + ‘A’).ToString();
                    break;
                }
            default:
                {
                    strtemp = strformat;
                    break;
                }
        }
        return strtemp;
    }

    public string GetRandomNum()
    {
        _strout = String.Empty;
        for (int i = 0; i < _strin.Length; i++)
        {
            _strout += this.GetOneRandomNum(_strin[i].ToString());
        }
        return _strout;
    }
}
下面是这个类在控制台下的使用 //此为调用显示,保存数据库方法见下面
Console.WriteLine("全是数字的随机数");
   MyRandom rnd1=new MyRandom("####-####-####-####");
   for(int i=0;i<10;i++)Console.WriteLine(rnd1.GetRandomNum());
   Console.WriteLine("全是大写字母的随机数");
   MyRandom rnd2=new MyRandom("$$$$-$$$$-$$$$-$$$$");
   for(int i=0;i<10;i++)Console.WriteLine(rnd2.GetRandomNum());
   Console.WriteLine("大写字母和数字混合随机数");
   MyRandom rnd3=new MyRandom("****-****-****-****");
   for(int i=0;i<10;i++)Console.WriteLine(rnd3.GetRandomNum());
   Console.WriteLine("前4位为1234后面分别是4位数字4位字母4位混合的随机数,没有分隔符");
   MyRandom rnd4=new MyRandom("1234####$$$$****");
   for(int i=0;i<10;i++)Console.WriteLine(rnd4.GetRandomNum());
   Console.ReadLine();     

输出的结果是

全是数字的随机数
9162-4581-4990-0207
1783-0140-3387-3646
6080-4696-2719-0319
2333-1887-7581-7088
5239-3034-7103-0400
1859-3158-1128-8891
8337-9252-0859-7572
4798-5843-7571-7459
1846-0319-3294-5506
4941-8060-9004-4445
全是大写字母的随机数
XEQF-MOWD-MYYA-AFAS
CTVI-BEKC-JIVU-HRLR
RBXA-KSYR-HSEX-AHEX
GIII-DVWS-TNVD-TCVV
NHJY-IAHK-UDBI-AMBB
EXNZ-JCOV-EEGW-WVYE
XJKT-YFPG-AXOZ-UOSG
LTZW-OVLK-SNUE-TLOZ
FWLQ-CIDY-IHZM-OOBQ
LZKC-VCQB-YAAL-LKMP
大写字母和数字混合随机数
WQO1-WN57-R516-PROW
4SPU-DSKE-L5C1-DCJX
VO52-MAK5-3HU0-INQF
L6B3-YG0J-D5DS-K7NJ
TJ6Z-OM8I-PUFP-NPJW
GJA2-C80V-WZNL-7RZ9
AZMY-J4WX-00T1-DBNP
325A-WNIE-OPBB-7E4W
QQDN-AR5C-FAYY-Z4IV
SRWF-C9TN-LXIV-MUHF
前4位为1234后面分别是4位数字4位字母4位混合的随机数,没有分隔符
12342886ROADWN57
12348625EDCRPROW
12341446RPSUDSKE

二、将数据批量输入至指定数据库表中

例如:我想随机产生200个不同的数据,并保存至jf表中的jf_bm字段中,为了防止批量数据中存在重复,设置表字段为唯一索引即可:

方法一:前台添加一个按钮,下面是按钮后台事件代码:  

  protected void Button1_Click(object sender, EventArgs e)
    {
        MyRandom rnd = new MyRandom("1234####$$$$****");//使用第四种格式输出;
        string selsql = "select jf_bm from jf";
        string inssql = "insert into jf(jf_bm) values(@jf_bm)";
        SqlConnection conn = new SqlConnection(ConfigurationM
anager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = new SqlCommand(selsql,conn);
        da.InsertCommand = new SqlCommand(inssql,conn);
        da.InsertCommand.Parameters.Add("@jf_bm", SqlDbType.VarChar, 50, "jf_bm");
        da.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
        da.UpdateBatchSize = 0;
        DataSet ds = new DataSet();
        da.Fill(ds);
        for (int i = 0; i < 200; i++)//循环200此,加入ds临时表中;
        {
            string jf_bm =rnd.GetRandomNum();
            ds.Tables[0].Rows.Add(jf_bm);
        }
        da.Update(ds.Tables[0]);//更新ds表,意味着批量添加成功;
        conn.close();

        ds.Tables[0].Clear();
        ds.Dispose();

    }

方法二:就是外围用for语句进行循环,里面用insert语句进行插入,不过要循环200次,很耗时间,如果有得2000000次,那不得了了,所以推荐方法一。

下面是附加的另外一种随机获取数字、字母组合的方法:

  private   static   char[]   constant=  
      {  
        ’0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,  
        ‘a’,'b’,'c’,'d’,'e’,'f’,'g’,'h’,'i’,'j’,'k’,'l’,'m’,'n’,'o’,'p’,'q’,'r’,'s’,'t’,'u’,'v’,'w’,'x’,'y’,'z’,  
        ‘A’,'B’,'C’,'D’,'E’,'F’,'G’,'H’,'I’,'J’,'K’,'L’,'M’,'N’,'O’,'P’,'Q’,'R’,'S’,'T’,'U’,'V’,'W’,'X’,'Y’,'Z’  
      };  
      public   static   string   GenerateRandom(int   Length)  
      {        
        System.Text.StringBuilder   newRandom   =   new   System.Text.StringBuilder(62);  
        Random   rd=   new   Random();  
        for(int   i=0;i<Length;i++)  
        {  
          newRandom.Append(constant[rd.Next(62)]);  
        }  
        return   newRandom.ToString();  
      }

//调用—————  
  sting   str=GenerateRandom(6);

本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:asp.net生成批量数据并保存至数据库表中[数据库]

一条评论

  1. yuming 2013 年 1 月 16 日 下午 2:43 回复

    请问如果要是要同时插入两列数据呢???

    cyheng 于 2013-01-16 18:22:34 回复

    同时添加两列,可参考下面两条语句,相应增加一个参数!string inssql = "insert into jf(jf_bm) values(@jf_bm)";da.InsertCommand.Parameters.Add("@jf_bm", SqlDbType.VarChar, 50, "jf_bm");

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ɣ回顶部