生成随机字符串

Jenny_0417 2016-11-14 05:20:53
 private void btnCreate_Click(object sender, EventArgs e)
{
int numLen = (int)this.numLen.Value;
int numCount = (int)this.numCount.Value;
string strCode = "";
System.Threading.Thread.Sleep(3);
string randChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
//数组索引随机数
int iRandNum;
//随机数生成器
long tick = DateTime.Now.Ticks;
Random r = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
//数量
for (int j = 1; j <= numCount; j++)
{
//字符串长度
for (int i = 1; i <= numLen; i++)
{
//Random类的Next方法生成一个指定范围的随机数
iRandNum = r.Next(randChars.Length);
strCode += randChars[iRandNum];
}
}}
生成的随即字符串要怎么不在一行显示?生成出来的都是连在一起的,我要导入数据库,连在一起的话就超出字段的varchar最大值了,求大神~
...全文
744 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 17 楼 qq_35848501 的回复:
引用 3 楼 xianfajushi 的回复:
一个字段装不下那就截取分段处理,以前写一个存储代码段的数据库就是这样处理.
怎么截取?求代码~
截取本来有函数可调用,何必问?只要处理好怎样存储才是重点。
by_封爱 版主 2016-11-18
  • 打赏
  • 举报
回复

            var 随机字符集 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            var 长度 = 10;
            var 数量 = 5;
 
            for (int i = 0; i < 数量; i++)
            {
                var 随机字符串 = string.Join("", 随机字符集.OrderBy(d => Guid.NewGuid()).Take(长度));
                var sql="insert into 表(字段)values('"+随机字符串+"')";
                 你的数据库帮助类,执行sql(sql);
            }
看不懂就辞职吧,,因为你连数据库的"行"跟代码里的"行"都不知道是什么意思...
Jenny_0417 2016-11-18
  • 打赏
  • 举报
回复
引用 3 楼 xianfajushi 的回复:
一个字段装不下那就截取分段处理,以前写一个存储代码段的数据库就是这样处理.
怎么截取?求代码~
大然然 2016-11-17
  • 打赏
  • 举报
回复
之前不是用人说过了吗? 用guid
Jenny_0417 2016-11-17
  • 打赏
  • 举报
回复
引用 14 楼 MrMicrosoft 的回复:
如果是导入一个字段,你换行也解决问题啊
那怎么让这么多数据按照如图数量为1这样插入数控据库呢? 现在只能点一下生成一个十位字符串,根本不能一下子生成很多十位字符串
crystal_lz 2016-11-15
  • 打赏
  • 举报
回复
            for (int j = 1; j <= numCount; j++)             {                 //字符串长度                 for (int i = 1; i <= numLen; i++)                 {                     //Random类的Next方法生成一个指定范围的随机数                     iRandNum = r.Next(randChars.Length);                     strCode += randChars[iRandNum];                 } strCode += "\r\n";             }}
xuzuning 2016-11-15
  • 打赏
  • 举报
回复
varchar 最大宽度为 8000,还不够你用的? 如果你限定了字段的宽度,那么你也同样要限定 this.numLen.Value 的上限 对于随机数发生器,相同的种子,将产生相同的序列 所以你只需保存 tick 和 在批次中的序号(j)就可以了 没必要去存储那些无意义的数据
  • 打赏
  • 举报
回复
一个字段装不下那就截取分段处理,以前写一个存储代码段的数据库就是这样处理.
  • 打赏
  • 举报
回复
如果是导入一个字段,你换行也解决问题啊
Jenny_0417 2016-11-15
  • 打赏
  • 举报
回复
那怎么通过字符串截取函数生成的字符串截取到变量,然后插入数据库?
Jenny_0417 2016-11-15
  • 打赏
  • 举报
回复
引用 11 楼 hanjun0612 的回复:
楼主没学过数据库吗。 这种不是字符串连不连一起的问题。 是你把几段字符串,通过sql语句,批处理插入数据库的问题+

insert into A
select '字符串1' union 
select '字符串2' union 
select '字符串3' union 
select '字符串4' 
现在醒悟了~
正怒月神 2016-11-15
  • 打赏
  • 举报
回复
楼主没学过数据库吗。 这种不是字符串连不连一起的问题。 是你把几段字符串,通过sql语句,批处理插入数据库的问题+

insert into A
select '字符串1' union 
select '字符串2' union 
select '字符串3' union 
select '字符串4' 
Jenny_0417 2016-11-15
  • 打赏
  • 举报
回复
引用 9 楼 diaodiaop 的回复:
[quote=引用 8 楼 qq_35848501 的回复:]
我是要把这些生成出来的字符串存起来,不要连在一起的,就像一行只显示一个字符串。


为什么不去执行一下,..

在说了 循环里面 你换行 看你在哪换行啊.. 你不是要多条记录么 跟换行也没什么关系吧[/quote]生成的这个随机字符串要存入数据库的一个字段里面,像这样显示
by_封爱 版主 2016-11-15
  • 打赏
  • 举报
回复
引用 8 楼 qq_35848501 的回复:
我是要把这些生成出来的字符串存起来,不要连在一起的,就像一行只显示一个字符串。
为什么不去执行一下,.. 在说了 循环里面 你换行 看你在哪换行啊.. 你不是要多条记录么 跟换行也没什么关系吧
Jenny_0417 2016-11-15
  • 打赏
  • 举报
回复
引用 6 楼 diaodiaop 的回复:
你写的代码太麻烦了.. 我看你的需求大概就是 生成X个长度为Y的随机字符串 是这个意思吧..

            var 随机字符集 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            var 长度 = 10;
            var 数量 = 5;

            for (int i = 0; i < 数量; i++)
            {
                var 随机字符串 = string.Join("", 随机字符集.OrderBy(d => Guid.NewGuid()).Take(长度));
                Console.WriteLine(随机字符串);
            }
我是要把这些生成出来的字符串存起来,不要连在一起的,就像一行只显示一个字符串。
Jenny_0417 2016-11-15
  • 打赏
  • 举报
回复
引用 5 楼 crystal_lz 的回复:
            for (int j = 1; j <= numCount; j++)             {                 //字符串长度                 for (int i = 1; i <= numLen; i++)                 {                     //Random类的Next方法生成一个指定范围的随机数                     iRandNum = r.Next(randChars.Length);                     strCode += randChars[iRandNum];                 } strCode += "\r\n";             }}
还是没有换行~
by_封爱 版主 2016-11-15
  • 打赏
  • 举报
回复
你写的代码太麻烦了.. 我看你的需求大概就是 生成X个长度为Y的随机字符串 是这个意思吧..

            var 随机字符集 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            var 长度 = 10;
            var 数量 = 5;

            for (int i = 0; i < 数量; i++)
            {
                var 随机字符串 = string.Join("", 随机字符集.OrderBy(d => Guid.NewGuid()).Take(长度));
                Console.WriteLine(随机字符串);
            }
bd_xuzhen 2016-11-14
  • 打赏
  • 举报
回复
怎么不用guid
江南小鱼 2016-11-14
  • 打赏
  • 举报
回复
你的strCode变量做的+=运算,不连在一起就怪了 你可以定义一个List<string>变量,来存储每次生成的随机数撒。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧