很简单吧.大概1千7百万条.
我要把这所有的数据都插入到SQL2005数据库上,
可以提供SQL语句也可以.
我知道for语句是可以的,只是不知道要For到什么时候.所以特意来问下大家.
双色球的组合式方法是
红区1~33
蓝区1~16的组合.
大家说说
3.6亿我就不期望了.2等奖也不赖了.但写这程序主要不是为了中奖.
而是我学习C#中,没有处理多大型的数据.想试着学习学习.顺便捞点水.
希望大家帮帮忙.

解决方案 »

  1.   

    (33*32*31*30*29*28)/(6*5*4*3*2*1)*16
    确实是1千7百多万条记录,for循环简单点,但插入这么多记录可能性能有点问题
    可以写个存储过程,循环放在存储过程里
      

  2.   

    孩子,别想了
    首先,除了for没别的办法
    其次,即使你for出来了也没啥用,你咋知道今天开的什么奖
    最后,你如果真能for出来,咱程序员都能弄个2等奖了
      

  3.   

    多重for循环了。
    第一重i:第一个蓝色球号码,从1开始,不大于33;
    第二重j:第二个蓝色球号码,从(i+1)开始,不大于33;
    第三重k:第三个蓝色球号码,从(j+1)开始,不大于33;
    第四重l:第四个蓝色球号码,从(k+1)开始,不大于33;
    第五重m:第五个蓝色球号码,从(l+1)开始,不大于33;
    第六重n:第六个蓝色球号码,从(m+1)开始,不大于33;
    这样生成的六个从小到大排列的蓝色球号码,不重复。
    然后用一个for循环红色球好么,从1到16.
    这样就完成了。
      

  4.   

    调用存储过程if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DoubleColorBall]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[DoubleColorBall]
    GOCREATE TABLE [dbo].[DoubleColorBall] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [Red1] [int] NOT NULL, 
    [Red2] [int] NOT NULL,
    [Red3] [int] NOT NULL,
    [Red4] [int] NOT NULL,
    [Red5] [int] NOT NULL,
    [Red6] [int] NOT NULL,
    [Blue] [int] NOT NULL
    ) ON [PRIMARY]
    GOALTER TABLE [dbo].[DoubleColorBall] ADD 
    CONSTRAINT [PK_DoubleColorBall] PRIMARY KEY  CLUSTERED 
    (
    [ID]
    )  ON [PRIMARY] 
    GOcreate proc MakeDoubleColorBall
    as
    declare @r1 as int  --红球1
    declare @r2 as int  --红球2
    declare @r3 as int  --红球3
    declare @r4 as int  --红球4
    declare @r5 as int  --红球5
    declare @r6 as int  --红球6
    declare @b as int   --篮球declare @sql as varchar(100)  --插入Sql语句set @r1=1
    while(@r1<29)
    begin
        set @r2=@r1+1
        while(@r2<30)
        begin
            set @r3=@r2+1
            while(@r3<31)
            begin
                set @r4=@r3+1
                while(@r4<32)
                begin
                   set @r5=@r4+1
                   while(@r5<33)
                   begin
                      set @r6=@r5+1
                      while(@r6<34)
                         begin
                             set @b=1
                             while(@b<17)
                                begin
                                   set @sql='insert into DoubleColorBall (Red1,Red2,Red3,Red4,Red5,Red6,Blue) Values(' + cast(@r1 as varchar(2)) + ',' + cast(@r2 as varchar(2)) + ',' + cast(@r3 as varchar(2)) + ',' + cast(@r4 as varchar(2)) + ',' + cast(@r5 as varchar(2)) + ',' + cast(@r6 as varchar(2)) + ',' + cast(@b as varchar(2)) +')'
                                   exec (@sql)  --插入记录
                                   set @b=@b+1
                                end
                             set @r6=@r6+1
                         end                  set @r5=@r5+1
                   end
                 
                   set @r4=@r4+1
                end            set @r3=@r3+1
            end        set @r2=@r2+1
        end    set @r1=@r1+1
    end
      

  5.   

    那如何批量插入呢.
    \wuzhengxuan大哥.你能给个嘛?存储过程的.批量插入的.效率高的.
      

  6.   

    优化了一下,少了一层篮球的循环,篮球批量插入(16倍)if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DoubleColorBall]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[DoubleColorBall]
    GOCREATE TABLE [dbo].[DoubleColorBall] (
        [ID] [int] IDENTITY (1, 1) NOT NULL ,
        [Red1] [int] NOT NULL, 
        [Red2] [int] NOT NULL,
        [Red3] [int] NOT NULL,
        [Red4] [int] NOT NULL,
        [Red5] [int] NOT NULL,
        [Red6] [int] NOT NULL,
        [Blue] [int] NOT NULL
    ) ON [PRIMARY]
    GOALTER TABLE [dbo].[DoubleColorBall] ADD 
        CONSTRAINT [PK_DoubleColorBall] PRIMARY KEY  CLUSTERED 
        (
            [ID]
        )  ON [PRIMARY] 
    GOcreate proc MakeDoubleColorBall
    as
    declare @r1 as int  --红球1
    declare @r2 as int  --红球2
    declare @r3 as int  --红球3
    declare @r4 as int  --红球4
    declare @r5 as int  --红球5
    declare @r6 as int  --红球6
    declare @b as int   --篮球
    set @r1=1
    while(@r1<29)
    begin
        set @r2=@r1+1
        while(@r2<30)
        begin
            set @r3=@r2+1
            while(@r3<31)
            begin
                set @r4=@r3+1
                while(@r4<32)
                begin
                   set @r5=@r4+1
                   while(@r5<33)
                   begin
                      set @r6=@r5+1
                      while(@r6<34)
                         begin
                            insert into DoubleColorBall (Red1,Red2,Red3,Red4,Red5,Red6,Blue) Values(@r1,@r2,@r3 ,@r4,@r5,@r6,1)
                             --插入记录
                                
                             set @r6=@r6+1
                         end                  set @r5=@r5+1
                   end
                 
                   set @r4=@r4+1
                end            set @r3=@r3+1
            end        set @r2=@r2+1
        end    set @r1=@r1+1
    endinsert into DoubleColorBall select Red1,Red2,Red3,Red4,Red5,Red6,Blue+1 from DoubleColorBall  ---复制篮球2
    insert into DoubleColorBall select Red1,Red2,Red3,Red4,Red5,Red6,Blue+2 from DoubleColorBall  ---复制篮球3,4
    insert into DoubleColorBall select Red1,Red2,Red3,Red4,Red5,Red6,Blue+4 from DoubleColorBall  ---复制篮球5,6,7,8
    insert into DoubleColorBall select Red1,Red2,Red3,Red4,Red5,Red6,Blue+8 from DoubleColorBall  ---复制篮球9,10,11,12,13,14,15,16
      

  7.   

    http://download.csdn.net/down/587275/xzherryjerry处理大量数据
      

  8.   

    谢gxingmin和liaoyukun111
    是啊.我想,要在里面在进行查找啊.什么的.就要用2分查找了.想学习下.
    中奖.还是发梦先会中.哈哈.
      

  9.   

    Mark ,你可以使用随机生啊!
      

  10.   

    貌似你玩过?
    最终的中奖号码是不是习惯性进行大小排序呢?人家 2 33 14 15 16 28 5中奖
    你买彩票的时候打印出来的是:2 14 15 16 28 33 5去领奖人家不给你?
    11楼的wuzhengxuan同学?