IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

[C#] Modifier une base de donnée


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    Par défaut [C#] Modifier une base de donnée
    Salut !

    J'utilise un objet OleDbDataAdapter (dat), un objet DataSet (f) et un objet OleDbConnection (connect).
    Pour lire la base de donnée il n'y a pas de prbm, ça marche. En revanche, quand j'essayes d'éxécuter un delete, un update ou un insert, ça me renvois une erreur
    J'ai essayé plusieurs code différent, et aucun ne marches. Il renvois tous une erreur (Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll sans autres précisions).

    Pour l'instant, je suis resté sur ce code là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dat.DeleteCommand=new OleDbCommand("DELETE * FROM table1,table2,table3",connect);
    connect.Open();
    dat.DeleteCommand.ExecuteNonQuery();
    connect.Close();
    C'est celui qui me semble être le plus suceptible de fonctionner correctement (en fait, j'ai déjas utilisé ce type de code pour lire une bdd en utilisant des DataReader).

    Je ne vois absolument pas ce qui pourrait être faux, donc si quelqu'un à déjas eu ce genre de prbm...

    [Tag [C#] ajouté par freegreg]
    [Pensez-y, vous-même, la prochaine fois. Merci ]

  2. #2
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Salut,
    Tu es sûr que ta requete est valide ?!?
    L'as-tu testé en dur sur ta base?
    Elle me semble louche
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Points : 77
    Points
    77
    Par défaut
    Salut,

    Peux tu nous fournir l'erreur exacte engendré par ton code ?

    Je trouve ta requete un peu strange non ?

    bye

  4. #4
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par freegreg
    Elle me semble louche
    DELETE FROM fonctionne sous quelques bases, Access notamment, mais ce n'est évidemment pas la synthaxe correcte.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    Par défaut
    Et bien, l'erreur exact est fournis dans le post de départ, il n'y a rien d'autre.

    Pour la requète, je ne l'est pas essayé avec Access (a vrai dire, je ne sais pas comment faire), mais c'est la syntaxe que j'utilise dans un autre programme en VB6 avec Access, sauf qu'ici, il n'y a pas de clause where. Sinon, sur les bases Oracle, cette requète marche.

    Pourquoi, qu'est-ce qu'elle a de bizarre ma requète :

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    paske delete marche sur des lignes tu na pas besoin de preciser ce que tu veut delete dans une table c tjs des lignes.
    donc est faux
    remplace par

  7. #7
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Macintoc
    Pourquoi, qu'est-ce qu'elle a de bizarre ma requète :
    Ben la bonne synthaxe est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DELETE Table1
    WHERE Table1.Column1=''
    Y a pas de FROM
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    Par défaut
    Ah ??

    Bizarre, pourquoi .net aurait une syntaxe spéciale ??

    Je suppose que pour supprimer le contenus de toutes les tables, il suffit de supprimer la clause where est ajouté la liste des tables aprés le delete ??

    Je v essayé.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    Par défaut
    Bien, alors j'ai trouvé comment éxécuter des requètes avec Access. A priorie, il ne supporte que la suppression du contenu d'une table à la fois ( avec la syntaxe "DELETE * FROM table;").

    Erreur plus étrange, j'ai 9 enregistrement dans une de mes tables, et quand j'essayes de la vider avec la requète, il me dit que je suis sur le point de supprimer 8 enregistrement, je clique sur yes. Puis il me dit qu'il ne pourrat pas supprimer les 9 enregistrements
    "Microsoft Access can't delete 9 record in the delete querry due to key violation and 0 record dur to lock violation".
    J'ai pas trés bien compris, là.

  10. #10
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Macintoc
    Ah ??

    Bizarre, pourquoi .net aurait une syntaxe spéciale ??
    C'est pas .net qui a une syntaxe spécial, c'est la syntaxe SQL standard :

    DELETE FROM ... est souvent compris par les SGBD, mais ce n'est pas correct.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    Par défaut
    Bien, je viens de résoudre le prbm du delete d'access, j'avais mal fait mon intégrité référentiel.

    Sinon, DELETE table; fonctionne (sans clause where) ??
    Parceque Access ne reconnait pas cette syntaxe.

    Sinon, ça ne marche toujours pas avec dans le programme

  12. #12
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Macintoc

    Sinon, DELETE table; fonctionne ??
    Parceque Access ne reconnait pas cette syntaxe.
    La syntaxe Access et la norme SQL, ça fait deux...
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  13. #13
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Pour moi, c'était le * qui me dérangeait le plus puis éventuellement le fait d'empiler les tables.
    Pour moi la syntaxe correcte est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM Table [WHERE ...]
    Ensuite en effet
    semble accepté mais bon


    Donc Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM table1; DELETE FROM table2; DELETE FROM table3;
    comme commande
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    Par défaut
    Keihilin>ceci explique celà

    freegreg>ça ne fonctionne pas mieux. J'ai toujours la même erreur.

    Est-ce qu'on peut modifier la table si aucun nom d'utilisateur et de mot de passe n'est définis dans la chainne de connection (ni dans la bdd, d'ailleur) ??

    Pasque j'ai plusieurs requètes insert par la suite qui ne marchent pas non plus.

  15. #15
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Bon bne pour la syntaxe du delete ca doit etre delete from <nomtable> where <nomcol> = <variable>

    sinon pour en revenir a ton probleme essaie de mettre un try and catch dans ton code et renvoie le message d'erreur généré.

    ca te facilitera la tache car les messages sont plus exeplicites

    @+

    Hirochirak
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    Par défaut
    Bon, ça y est, j'ai compris le prbm.

    Il faut simplement activer on delete cascade sur tous les liens qui existent entre les tables, le reste suis tous seul.

    Je trouveq qu'Access est un peu space comme bdd.

    Pour le reste, j'écouterais vos conseils.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier une base de données sur un ordinateur local
    Par tranath dans le forum Accès aux données
    Réponses: 1
    Dernier message: 04/10/2007, 16h49
  2. Modifier une base de données
    Par dddodo dans le forum Access
    Réponses: 3
    Dernier message: 15/02/2007, 22h54
  3. [Conception] Modifier une base de données
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/06/2006, 09h21
  4. Réponses: 8
    Dernier message: 23/03/2005, 19h28
  5. Réponses: 7
    Dernier message: 05/01/2005, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo