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

53 篇文章 0 订阅
22 篇文章 4 订阅

由于使用ADO访问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  id ="form1"  runat ="server" >
    
< div >
      
< asp:GridView  ID ="GridView1"  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  id ="Head1"  runat ="server" >
  
< title > 随机读取Access数据库记录 </ title >
</ head >
< body >
  
< form  id ="form1"  runat ="server" >
    
< div >
      
< asp:GridView  ID ="GridView1"  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 >
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值