asp.net生成批量数据并保存至数据库表中[数据库]
原理很简单:首先,调用类或函数生成批量数据,然后,通过后台方法将数据批量输入到数据库中
下面是学习总结的方法:
一、通过类文件,产生随机数据
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生成批量数据并保存至数据库表中[数据库]
一条评论
请问如果要是要同时插入两列数据呢???