C# 数据库随机抽取数据
怎么在C#ASP.net中设置一个按钮,点击随机从数据库中抽3条数据,然后显示提取时间,在10分钟内不再提取这3条数据...
怎么在C# ASP.net中设置一个按钮,点击随机从数据库中抽3条数据,然后显示提取时间,在10分钟内不再提取这3条数据
展开
3个回答
展开全部
简单点实现可以在表中使用GUID,并自动生成,取数据时以此字段排序,使用完再更新此字段,10分钟的判断则通过加一个时间栏位就红了。基本保证是随机的。步骤如下:
建个测试表,假定tData是你需要的字段,tGUID、tUseTime为必须字段且不可为空
CREATE TABLE [dbo].[tbaidu_t1](
[tGUID] [uniqueidentifier] NOT NULL,
[tUseTime] [datetime] NOT NULL,
[tData] [int] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tbaidu_t1] ADD CONSTRAINT [DF_tbaidu_t1_tGUID] DEFAULT (newid()) FOR [tGUID]
GO
ALTER TABLE [dbo].[tbaidu_t1] ADD CONSTRAINT [DF_tbaidu_t1_tUseTime] DEFAULT (getdate()) FOR [tUseTime]
GO
2. 新建一个存储过程
CREATE PROC usp_tbaidu_GetRandData
AS
-- 选取指定数据
SELECT TOP 3 * FROM tbaidu_t1
WHERE datediff(MI,tUsetime,GETDATE())>4
ORDER BY tGUID
-- 更新已选择数据的时间栏位
UPDATE tbaidu_t1 SET tUseTime = GETDATE()
WHERE tGUID IN(
SELECT TOP 3 tGUID FROM tbaidu_t1
WHERE datediff(MI,tUsetime,GETDATE())>4
ORDER BY tGUID
)
--更新所有数据对应的fGUID字段
UPDATE tbaidu_t1 SET tGUID = NEWID()
3.执行存储过程就好了
EXEC usp_tbaidu_GetRandData
ZESTRON
2024-09-04 广告
2024-09-04 广告
表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面污染有助于实施...
点击进入详情页
本回答由ZESTRON提供
展开全部
随机抽取 ?
我给你讲下思路好了 首先随即值 是可以自动生成的 你知道。
先保存如下几个变量 当前时间 数据库总的取值范围 也就是行数 数组 用来保存已经用过的随机数
然后就是比对 重复的问题 不重复就取 重复的就换个随机数
我给你讲下思路好了 首先随即值 是可以自动生成的 你知道。
先保存如下几个变量 当前时间 数据库总的取值范围 也就是行数 数组 用来保存已经用过的随机数
然后就是比对 重复的问题 不重复就取 重复的就换个随机数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我这只是思路啊,这个要实现的话要使用多线程技术
一个线程负责产生随机数与抽取数据
1首先一个随机数
对比内变量里的随机数,是否有重复,如果重复则此次无效,重新生成
2,根据此随机数抽取数据库中数据。
另一个线程负责清空内存变量的数据
即此线程开着一个计时器,然后根据时间来清除数据
希望对你有所帮助
一个线程负责产生随机数与抽取数据
1首先一个随机数
对比内变量里的随机数,是否有重复,如果重复则此次无效,重新生成
2,根据此随机数抽取数据库中数据。
另一个线程负责清空内存变量的数据
即此线程开着一个计时器,然后根据时间来清除数据
希望对你有所帮助
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询