none
Problème avec une commande Sql

    Question

  • Bonjour

    Je charge une base Access et la place dans une DataGridView à l'aide d'une DataTable nommée dtGeoDB.

    Cela marche ok.

    Ensuite je veux chercher certaine valeurs dans cette table.

    J'ai donc mis sur ma form un TextBox et un bouton avec le code suivant:

     DBConGeoDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + nomFichierGeoDB + ";Persist Security Info=True";
                using (DBConGeoDB)
                {
                    int i = dtGeoDB.Columns.Count;
                    DBConGeoDB.Open();
                    OleDbCommand cmd = DBConGeoDB.CreateCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "Select * From dtGeoDB";
                    cmd.ExecuteNonQuery();
                    DataTable dt = new DataTable();
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                    da.Fill(dt);
                }

    A la ligne cmd.ExecuteNonQuery() j'obtiens une erreur car la table dtGeoDB qui est déclarée dans les variables globales n'est pas trouvée.

    Or la ligne 

    int i = dtGeoDB.Columns.Count;

    fonctionne bien et donne le bon résultat.

    Merci pour votre aide.

    Bernard


    Bernard Bouree

    mercredi 5 juillet 2017 15:58

Réponses

  • Bonjour Bernard,

    Vous devriez essayer avec un objet DataSet.

    VisualStudio se charge de créer des classes qui vous facilitent grandement la lecture et l'écriture dans la base de données.

    Sur votre projet -> bouton droit de la souris -> Ajouter un nouvel élément

    Choisir Dataset


    Vous lui donnez un nom

    Ensuite vous connecter votre dataset à une base de données

    Sur le volet Explorateur de serveurs -> Connexion de données-> bouton droit de la souris -> ajouter

    Puis dans le formulaire ci-dessous sélectionnez le type de source et le chemin

    Visual studio vous demandera si vous voulez déployer votre base avec votre application.

    si la base de données est sur un serveur il faut dire  non.

    Cordialement

    Gérard

    jeudi 6 juillet 2017 12:45
  • La suite

    ensuite il suffit de faire un glisser-coller depuis la base de données vers le dataset

    VisualStudion créera la chaine de connexion dans le Settings

    Voici un exemple pour interroger la base de données:

    Mon dataset s'appelle DbLiner.

    Visual studio a créé 2 classes: DbLiner et DbLinerTableAdapters

    Créez une table à remplir

    DbLiner.PiscineFabricantsDataTable l_Tbl = new DbLiner.PiscineFabricantsDataTable();

    Créez un DataAdaptater pour remplir la table:

    DbLinerTableAdapters.PiscineFabricantsTableAdapter l_AdaptFab =

    new DbLinerTableAdapters.PiscineFabricantsTableAdapter();

    l_AdaptFab.Fill(l_Tbl);
    foreach (DELdbLiner.DbLiner.PiscineFabricantsRow l_RowF in l_Tbl)
    {
    l_Rslt.Add(l_RowF.FABRICANT_NOM);
    }

    Pour ajouter

    DbLiner.PiscineFabricantsRow l_RowF = l_Tbl.NewPiscineFabricantsRow ();

    l_RowF.FABRICANT = l_IDFab;
    l_Tbl.AddPiscineFabricantRow(l_RowF);
    l_Adapt.Update(l_Tbl);

    Cordialement
    Gérard

    • Marqué comme réponse BernardBouree jeudi 6 juillet 2017 14:31
    jeudi 6 juillet 2017 13:03

Toutes les réponses

  • Bonjour Bernard,

    Vous devriez essayer avec un objet DataSet.

    VisualStudio se charge de créer des classes qui vous facilitent grandement la lecture et l'écriture dans la base de données.

    Sur votre projet -> bouton droit de la souris -> Ajouter un nouvel élément

    Choisir Dataset


    Vous lui donnez un nom

    Ensuite vous connecter votre dataset à une base de données

    Sur le volet Explorateur de serveurs -> Connexion de données-> bouton droit de la souris -> ajouter

    Puis dans le formulaire ci-dessous sélectionnez le type de source et le chemin

    Visual studio vous demandera si vous voulez déployer votre base avec votre application.

    si la base de données est sur un serveur il faut dire  non.

    Cordialement

    Gérard

    jeudi 6 juillet 2017 12:45
  • La suite

    ensuite il suffit de faire un glisser-coller depuis la base de données vers le dataset

    VisualStudion créera la chaine de connexion dans le Settings

    Voici un exemple pour interroger la base de données:

    Mon dataset s'appelle DbLiner.

    Visual studio a créé 2 classes: DbLiner et DbLinerTableAdapters

    Créez une table à remplir

    DbLiner.PiscineFabricantsDataTable l_Tbl = new DbLiner.PiscineFabricantsDataTable();

    Créez un DataAdaptater pour remplir la table:

    DbLinerTableAdapters.PiscineFabricantsTableAdapter l_AdaptFab =

    new DbLinerTableAdapters.PiscineFabricantsTableAdapter();

    l_AdaptFab.Fill(l_Tbl);
    foreach (DELdbLiner.DbLiner.PiscineFabricantsRow l_RowF in l_Tbl)
    {
    l_Rslt.Add(l_RowF.FABRICANT_NOM);
    }

    Pour ajouter

    DbLiner.PiscineFabricantsRow l_RowF = l_Tbl.NewPiscineFabricantsRow ();

    l_RowF.FABRICANT = l_IDFab;
    l_Tbl.AddPiscineFabricantRow(l_RowF);
    l_Adapt.Update(l_Tbl);

    Cordialement
    Gérard

    • Marqué comme réponse BernardBouree jeudi 6 juillet 2017 14:31
    jeudi 6 juillet 2017 13:03
  • Bonjour Gérard

    et merci pour ces explications détaillées!

    Cordialement

    Bernard


    Bernard Bouree

    jeudi 6 juillet 2017 14:32