由于使用ADO访问Access数据库会有缓存,这在随机提取数据库数据时,例如:sql="selecttop10Title,objectGuidfromDocumentOrderByRnd(id)",将得不到随机记录,下面的例子可以克服这一缺陷,实现数据库的随机读取。
C#:
复制代码 代码如下:
<%@PageLanguage="C#"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<scriptrunat="server">
protectedvoidPage_Load(objectsender,EventArgse)
{
Randomrnd=newRandom(unchecked((int)DateTime.Now.Ticks));
intintRandomNumber=rnd.Next();
stringConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=DataDirectoryaspxWeb.mdb;PersistSecurityInfo=True";
stringsql="selecttop10Title,objectGuidfromDocumentOrderByRnd("+(-1*intRandomNumber)+"*id)";
System.Data.OleDb.OleDbConnectioncn=newSystem.Data.OleDb.OleDbConnection(ConnectionString);
cn.Open();
System.Data.OleDb.OleDbCommandcmd=newSystem.Data.OleDb.OleDbCommand(sql,cn);
System.Data.OleDb.OleDbDataReaderdr=cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
GridView1.DataSource=dr;
GridView1.DataBind();
dr.Close();
cmd.Dispose();
cn.Dispose();
cn=null;
}
</script>