Probleme OleDbDataReader

bibibiba Messages postés 3 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 23 juillet 2008 - 25 juin 2008 à 10:45
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 28 juin 2008 à 21:43
Bonjour,je suis novice en C# et j'ai une classe BaseAccess qui doit permettre de lire les données d'un utilisateur contenues dans une base,pour ce faire je veux utiliser une Hashtable qui recueillerait les données de la personne a sa connexion mais j'ai beau faire,la hashtable ne prends aucun argument,pourriez vous m'aider?

using System;
using System.Collections;
using System.Data;
using System.Data.OleDb;
using Authentification;
using utile;
using System.Reflection;
using System.ComponentModel;
using System.Windows.Forms;

namespace General
{
 public class BaseAccess
 {
  private string filename;
  private string connStr;
  private OleDbConnection oConn;
  private OleDbDataReader rdr;
  private OleDbCommand oCmd=new OleDbCommand();
  
  // type record contenant le nom d'une colonne et sa valeur associée
  public struct record
  {
   public record(string column_name, object content)
   {
    this.column_name = column_name;
    this.content = content;
   }
   public string column_name;
   public object content;
  }
  // constructeur nécessitant le path du fichier base de donnée Access
  public BaseAccess()
  { 
   //le filename correspond a la ligne du .ini
   this.filename = Parametres.chemin_base;
   this.connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filename;
  }
  
  ~BaseAccess()
  { 
   this.Close();
  }
  // établie une connexion sur la base Access
  public bool Open()
  {
   try
   {
    this.oConn = new OleDbConnection(this.connStr);
    this.oConn.Open();
    return true;
   }
   catch
   {
    return false;
   }
  }
  // ferme la connexion à la base Access
  public bool Close()
  {
   try
   {
    this.oConn.Close();
    return true;
   }
   catch
   {
    return false;
   }
  }
  // execute une requête SQL sur la base Access
  public bool Execute(string ordre)
  {
   try
   {
    
    this.oCmd = new OleDbCommand(ordre,this.oConn);
    this.rdr = this.oCmd.ExecuteReader();
    Console.WriteLine("La requete a reussie");
    return true;
   }
   catch
   {
    Console.WriteLine("La requete a echoué");
    return false;
    
   }
  }
  // renvoi une ArrayList contenant des enregistrements de type record
  // contenant les différents champs de la ligne lue
  public ArrayList Fetch()
  {
   ArrayList row = new ArrayList();
   if (this.rdr.Read())
   {
    record rec;
    for (int i=0;i<this.rdr.FieldCount;i++)
    {
     rec.column_name = this.rdr.GetName(i);
     rec.content = this.rdr[i];
     row.Add(rec);
    }
   }
   return row;
  }
    
  public Hashtable Fetch2()
  {
   Hashtable row = new Hashtable();
   MessageBox.Show("compte table\n"+this.rdr.FieldCount);
   if (this.rdr.Read())
   {
    //record rec;
    for (int i=0;i<this.rdr.FieldCount;i++)
    {
     //rec.column_name = this.rdr.GetName(i);
     //rec.content = this.rdr[i];
     row.Add(this.rdr.GetName(i),this.rdr[i]);
    }
   }
   return row;
  }

1 réponse

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
28 juin 2008 à 21:43
Salut,

2 pistes :
- la requête executée renvoi un jeu de résultats vide
- la requête executée renvoi plusieurs jeux de résultats, et le premier est vide

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous