在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
抽奖程序: 思路整理,无非就是点一个按钮,然后一个图片旋转一会就出来个结果就行了,可这个程序的要求不是这样的,是需要从数据库中随机抽取用户,根据数据库中指定的等级和人数,一键全部抽出来结果就行了。同时需要存储到数据库。还需要一个导出的功能。 不能遗漏的是,如果通过随机数根据id来抽取的话,需要考虑id不连续的问题,如果全部取出id也不现实。尽量少的去读写数据库。 数据库: 复制代码 代码如下: CREATE TABLE [dbo].[users]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](50) NOT NULL, [phone] [nvarchar](50) NULL, CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[result]( CREATE TABLE [dbo].[awards]( CREATE VIEW [dbo].[view1] CREATE PROCEDURE [dbo].[getranddata] SET @minid = 其中三张表,一个视图,一个存储过程。 后台代码: 复制代码 代码如下: protected void Button1_Click(object sender, EventArgs e) { SqlConnection sqlcon = new SqlConnection("server=.;database=test;uid=sa;pwd=123"); sqlcon.Open(); SqlDataAdapter sqlsda = new SqlDataAdapter("select * from awards", sqlcon); ds = new DataSet(); sqlsda.Fill(ds); DataTable dt = ds.Tables[0].Copy(); ds.Clear(); int count = dt.Rows.Count; for (int i = 0; i < count; i++) sqlsda = new SqlDataAdapter("select top " + Convert.ToInt32(dt.Rows[i]["Number"]) + " * from view1 order by resultid desc", sqlcon); switch (i) 奖项设置: 抽奖结果: ================================================================= 知识点: SQL - 生成指定范围内的随机数 复制代码 代码如下: DECLARE @Result INT DECLARE @Upper INT DECLARE @Lower INT SET @Lower = 1 SET @Upper = 10 SELECT @Result = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0) SELECT @Result ROUND()函数:返回按指定位数进行四舍五入的数值。 RAND()函数:生成随机数。 SQL循环语句嵌套 复制代码 代码如下: DECLARE @i int SET @i=1 while @i<8 BEGIN IF @i<5 print space(4-@i)+REPLICATE('*',2*@i-1) ELSE print space(@i-4)+REPLICATE('*',15-2*@i) SET @i=@i + 1 END |
请发表评论