En raison du cache du jeu d'enregistrements de la base de données Access, il n'est pas possible d'obtenir des enregistrements aléatoires de la base de données Access à partir du code. Il est nécessaire d'utiliser des instructions SQL aléatoires pour éliminer le cache.
Voici un exemple :
Consultez l'exemple http://dotnet.aspx.cc/Exam/GetRandom.aspx
<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<title>Obtenir les enregistrements de la base de données Access de manière aléatoire</title>
<script runat="serveur">
void Page_Load (Object src, EventArgs e)
{
si(!IsPostBack)
{
chaîne MyConnString = "Provider=Microsoft.Jet.OleDB.4.0;Data Source="
+ Server.MapPath("aspxWeb.mdb.ascx");
Aléatoire R = nouveau Aléatoire();
int intRandomNumber = R.Next(1,1000);
string sql = "sélectionner les 10 premiers identifiants comme numéro de série, titre comme titre dans l'ordre des documents par Rnd("
+ (-1 * intRandomNumber).ToString() + "*id)";
OleDbConnection MyConnection = new OleDbConnection(MyConnString);
MaConnexion.Open();
OleDbCommand cmd = new OleDbCommand(sql,MyConnection);
OleDbDataReader dr = cmd.ExecuteReader();
DataGrid1.DataSource = dr;
DataGrid1.DataBind();
cmd.Dispose();
MaConnexion.Close();
MaConnexion.Dispose();
MaConnexion = null ;
}
}
</script>
<formulaire runat=serveur>
<asp:DataGrid id="DataGrid1" HorizontalAlign="Centre"
Largeur="600px" runat="serveur" Font-Size="9pt">
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center" />
</asp:DataGrid>
</form>