千家信息网

.net+mssql制作抽奖程序思路及源码怎么编写

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这期内容当中小编将会给大家带来有关.net+mssql制作抽奖程序思路及源码怎么编写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。抽奖程序:思路整理,无非就是点一个
千家信息网最后更新 2026年10月31日.net+mssql制作抽奖程序思路及源码怎么编写

这期内容当中小编将会给大家带来有关.net+mssql制作抽奖程序思路及源码怎么编写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

抽奖程序:

思路整理,无非就是点一个按钮,然后一个图片旋转一会就出来个结果就行了,可这个程序的要求不是这样的,是需要从数据库中随机抽取用户,根据数据库中指定的等级和人数,一键全部抽出来结果就行了。同时需要存储到数据库。还需要一个导出的功能。

不能遗漏的是,如果通过随机数根据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]([id] [int] IDENTITY(1,1) NOT NULL,[usersid] [int] NOT NULL,[awardsid] [int] NOT NULL,CONSTRAINT [PK_result] 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].[awards]([id] [int] IDENTITY(1,1) NOT NULL,[Name] [nvarchar](50) NOT NULL,[Number] [int] NOT NULL,CONSTRAINT [PK_awards] 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 VIEW [dbo].[view1]ASSELECT dbo.result.id AS resultid, dbo.users.id, dbo.users.name, dbo.users.phone, dbo.awards.Name AS awardnameFROM dbo.awards INNER JOIN dbo.result ON dbo.awards.id = dbo.result.awardsid INNER JOIN dbo.users ON dbo.result.usersid = dbo.users.id

CREATE PROCEDURE [dbo].[getranddata] --这个地方的参数是后台调用传的参数,两个变量之间需要","号分开@count int, --剩余奖项大小@awards int --奖项的idAS BEGIN --这个地方定义的参数是存储过程内部用到的DECLARE @minid int --最大idDECLARE @maxid int --最小idDECLARE @randnum int --随机数临时变量DECLARE @exist int --查询结果

SET @minid = (SELECT top 1 id FROM users ORDER BY id ASC) --查询最小idSET @maxid = (SELECT top 1 id FROM users ORDER BY id DESC) --查询最大id--set @count = 100--set @awards = 1--嵌套语句begin开始,end结束while @count>0 BEGINSELECT @randnum = ROUND(((@maxid - @minid -1) * RAND() + @minid), 0)SET @exist = (SELECT count(*) FROM users WHERE id=@randnum) IF @exist = 1 BEGININSERT INTO result(usersid,awardsid)VALUES(@randnum, @awards)SET @count = @count - 1 END END END

其中三张表,一个视图,一个存储过程。

后台代码:

代码如下: 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++) { SqlCommand sqlcmd = new SqlCommand("getranddata", sqlcon); SqlParameter pcount = new SqlParameter("@count", Convert.ToInt32(dt.Rows[i]["Number"])); SqlParameter pawards = new SqlParameter("@awards", Convert.ToInt32(dt.Rows[i]["id"])); sqlcmd.Parameters.Add(pcount); sqlcmd.Parameters.Add(pawards); sqlcmd.CommandType = CommandType.StoredProcedure; sqlcmd.ExecuteNonQuery();

sqlsda = new SqlDataAdapter("select top " + Convert.ToInt32(dt.Rows[i]["Number"]) + " * from view1 order by resultid desc", sqlcon); sqlsda.Fill(ds, "t" + i.ToString());

switch (i) { case 0: GridView1.DataSource = ds.Tables["t" + i.ToString()].Copy().DefaultView; GridView1.DataBind(); break; case 1: GridView2.DataSource = ds.Tables["t" + i.ToString()].Copy().DefaultView; GridView2.DataBind(); break; case 2: GridView3.DataSource = ds.Tables["t" + i.ToString()].Copy().DefaultView; GridView3.DataBind(); break; default: break; } } sqlcon.Close();}

奖项设置:

抽奖结果:

=================================================================

知识点:

SQL - 生成指定范围内的随机数

代码如下: DECLARE @Result INT DECLARE @Upper INT DECLARE @Lower INTSET @Lower = 1SET @Upper = 10SELECT @Result = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)SELECT @Result

ROUND()函数:返回按指定位数进行四舍五入的数值。

RAND()函数:生成随机数。

SQL循环语句嵌套

代码如下: DECLARE @i intSET @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

上述就是小编为大家分享的.net+mssql制作抽奖程序思路及源码怎么编写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

代码 数据 数据库 程序 结果 随机数 思路 参数 奖项 存储 查询 源码 制作 最大 最小 内容 函数 变量 后台 地方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技产业 高科技互联网 奇酷互联网络科技 世界互联网领先科技成果 安徽鑫晟辉互联网科技 左右互联网络科技 互联网科技公司招聘 深圳前海聚择互联网科技有限公司 宁波青枫互联网科技有限公司 互联网科技寓意 互联网科技教育视频 湖南诚度互联网科技有限公司 青岛科技大学互联网大赛研究生 华夏恒生互联网科技013171 互联网在线教育科技创业 玉溪新华互联网科技好不好 深圳互联网科技的发展 神州科技互联网有限公司 西安左小互联网科技有限公司 美国五大互联网科技公司市值多少 百单网互联网科技有限公司怎么样 互联网科技ppt模板 科技类的互联网平台 互联网科技创新企业排名 科技互联网的估值 互联网科技实习生岗位职责 银川新华互联网科技职业技术培训学校图片 晓花互联网科技有限公司网址 广州富喜互联网络科技 黑龙江互联网科技公司
0