C# 数据库随机抽取数据

怎么在C#ASP.net中设置一个按钮,点击随机从数据库中抽3条数据,然后显示提取时间,在10分钟内不再提取这3条数据... 怎么在C# ASP.net中设置一个按钮,点击随机从数据库中抽3条数据,然后显示提取时间,在10分钟内不再提取这3条数据 展开
 我来答
知识海洋畅想店
推荐于2016-03-28 · TA获得超过193个赞
知道小有建树答主
回答量:267
采纳率:100%
帮助的人:166万
展开全部

简单点实现可以在表中使用GUID,并自动生成,取数据时以此字段排序,使用完再更新此字段,10分钟的判断则通过加一个时间栏位就红了。基本保证是随机的。步骤如下:

  1. 建个测试表,假定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 广告
表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面污染有助于实施... 点击进入详情页
本回答由ZESTRON提供
做人好累好累
2013-10-06 · TA获得超过1061个赞
知道答主
回答量:517
采纳率:0%
帮助的人:253万
展开全部
随机抽取 ?

我给你讲下思路好了 首先随即值 是可以自动生成的 你知道。

先保存如下几个变量 当前时间 数据库总的取值范围 也就是行数 数组 用来保存已经用过的随机数

然后就是比对 重复的问题 不重复就取 重复的就换个随机数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
15...7@qq.com
2013-10-06 · 超过12用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:35.2万
展开全部
我这只是思路啊,这个要实现的话要使用多线程技术
一个线程负责产生随机数与抽取数据
1首先一个随机数
对比内变量里的随机数,是否有重复,如果重复则此次无效,重新生成
2,根据此随机数抽取数据库中数据。

另一个线程负责清空内存变量的数据
即此线程开着一个计时器,然后根据时间来清除数据

希望对你有所帮助
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式