Asp.net获取Access随机记录

来源:互联网 发布:穿越火线网络异常23-2 编辑:程序博客网 时间:2024/05/01 11:01

 获取Access随机记录的SQL语句很多种,其中一个
select top 10 * from table order by rnd(ID)
在Access里用查询执行这条语句可以得到随机的10条记录,但是在.Net里调用这条语句的时候就不对了,始终是同样的记录而不是随机的。这是因为ADO访问Access数据库的时候会有缓存。我们采用以下语句解决这个问题
Random rnd = new Random(unchecked((int)DateTime.Now.Ticks));
int intRandomNumber = rnd.Next();
"select top 10 * from table order by rnd("+Convert.ToString(-1*intRandomNumber)+"*ID)"
这里面需要注意,采用乘法是为了不重复程度要高,可以试一下加法,效果相对差很多。另外尤其要注意ID的值,是文本还是数值无所谓,但ID的大小是很重要的,我一般习惯生成一个20位的随机数作为ID的值,但在这就导致最终得不到随机记录,之后改成自增字段,ID的值明显变小,这样才可以。也许是因为超出了该字段所能表示范围了吧。可以试试调整该字段的字段大小。