位置:海鸟网 > IT > ASP.NET >

ASP.NET 2.0中随机读取Access数据库记录

缓存,这在随机提取数据库数据时,例如:sql="select top 10 Title,objectGuid from Document Order By Rnd(id)",将得不到随机记录,下面的例子可以克服这一缺陷,实现数据库的随机读取。
  
  C#:
  
  <%@ Page Language="C#" %>
  
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
  <script runat="server">
  
   protected void Page_Load( object sender, EventArgs e )
   {
   Random rnd = new Random(unchecked((int)DateTime.Now.Ticks));
   int intRandomNumber = rnd.Next();
   string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ASPxWeb.mdb;Persist Security Info=True";
   string sql = "select top 10 Title,objectGuid from Document Order By Rnd(" + (-1 * intRandomNumber) + "*id)";
   System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection(ConnectionString);
   cn.Open();
   System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql, cn);
   System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
   GridView1.DataSource = dr;
   GridView1.DataBind();
   dr.Close();
   cmd.Dispose();
   cn.Dispose();
   cn = null;
  
   }
  </script>
  
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
   <title>随机读取Access数据库记录</title>
  </head>
  <body>
   <form runat="server">
   <div>
   <asp:GridView runat="server" AutoGenerateColumns="false">
   <Columns>
   <ASP:HyperLinkField DataNavigateUrlFields="objectGuid" HeaderText="文章" DataTextField="Title"
   DataNavigateUrlFormatString="http://dotnet.aspx.cc/Article/{0}/read.aspx" />
   </Columns>
   </asp:GridView>
   </div>
   </form>
  </body>
  </html>
  VB.NET:
  
  <%@ Page Language="VB" Debug="true" %>
  
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
  <script runat="server">
  
   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
   Dim TimeString As String = DateTime.Now.Ticks.ToString()
   Dim a As UInt32 = UInt32.Parse(TimeString.Substring(TimeString.Length - 8, 8))
   Dim b As Int32 = BitConverter.ToInt32(BitConverter.GetBytes(a), 0)
   Dim rnd As Random = New Random(b)
   Dim intRandomNumber As Integer = rnd.Next
   Response.Write(intRandomNumber)
   Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ASPxWeb.mdb;Persist Security Info=True"
   Dim sql As String = "select top 10 Title,objectGuid from Document Order By Rnd(" + (-1 * intRandomNumber).ToString() + "*id)"
   Dim cn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConnectionString)
   cn.Open()
   Dim cmd As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand(sql, cn)
   Dim dr As System.Data.OleDb.OleDbDataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
   GridView1.DataSource = dr
   GridView1.DataBind()
   dr.Close()
   cmd.Dispose()
   cn.Dispose()
   cn = Nothing
   End Sub
  </script>
  
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
   <title>随机读取Access数据库记录</title>
  </head>
  <body>
   <form runat="server">
   <div>
   <asp:GridView runat="server" AutoGenerateColumns="false">
   <Columns>
   <ASP:HyperLinkField DataNavigateUrlFields="objectGuid" HeaderText="文章" DataTextField="Title"
   DataNavigateUrlFormatString="http://dotnet.aspx.cc/Article/{0}/read.aspx" />
   </Columns>
   </asp:GridView>
   </div>
   </form>
  </body>
  </html>