由于Access数据库记录集缓存的原因,从代码里得到Access数据库随机记录是得不到,需要用随机SQL语句的办法来消除缓存。 下面就是例子:
# l- a/ b8 U! B1 @* Y voidPage_Load(Objectsrc,EventArgse)' S' n- n4 e2 _3 P7 |# S6 O
{
- @% i2 V. a: a) N if(!IsPostBack), c7 j* d+ i/ j$ W
{
5 i# |. Z/ g% U. @ stringMyConnString=“Provider=Microsoft.Jet.OleDB.4.0;DataSource=”
& }: x# i' _, L! }- @9 v, s +Server.MapPath(”aspxWeb.mdb.ascx”);
$ I q) Z6 X! n {3 j y0 o2 n RandomR=newRandom();
1 x8 F) h: Z4 { intintRandomNumber=R.Next(1,1000);
& h/ A5 C5 J o- A! X, q5 M) c stringsql=“selecttop10idAs序号,TitleAs标题fromDocumentOrderByRnd(”! G% z9 w6 ~5 I0 `; O
+(-1*intRandomNumber).ToString()+“*id)”;3 v \3 ?6 b. d7 l
OleDbConnectionMyConnection=newOleDbConnection(MyConnString);* ?7 v( t0 F; G$ y! i0 ]% n+ X' H
MyConnection.Open();6 m! H$ {+ ~( k. U
OleDbCommandcmd=newOleDbCommand(sql,MyConnection);8 Z* _) X& y$ y& t
OleDbDataReaderdr=cmd.ExecuteReader();' K) K) b, S* Y$ I3 x S
DataGrid1.DataSource=dr;) d" F& i, R8 t# f
DataGrid1.DataBind();2 R+ q: Z, Z1 Z8 Y- X
cmd.Dispose();
% W# k6 f( d2 r MyConnection.Close();
* ]& S; z5 \" n: h& y- O7 s MyConnection.Dispose();
' H; j% {# O4 R a6 [# q MyConnection=null;
2 [. X2 p) p8 A1 O }
: k, J6 F" u( F, N4 o' |. x: \6 L }
6 B: C) w) p1 H* {8 \, z |