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

ASP.NET Discussion :

Les requettes Update, delete, et insert ne fonctionnent plus


Sujet :

ASP.NET

  1. #1
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut Les requettes Update, delete, et insert ne fonctionnent plus
    Bounjour,
    J'ai utilisé Visual Studio 2005 pour mon projet. Tous marchent normalement lorsque j'ai lancé les pages à partir de Visual Studio 2005. Une fois le projet terminé, je les ai exporté dans IIS pour le publier. Les erreurs suivant sont ensuite envoyé par le serveur après :

    ERROR [HY000] [Microsoft][Pilote ODBC Microsoft Access] L'opération doit utiliser une requête qui peut être mise à jour.
    Description : Une exception non géré s'est produite au moment de l'exécution de la demande Web actuelle. Controlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Data.Odbc.OdbcException: ERROR [HY000] [Microsoft][Pilote ODBC Microsoft Access] L'opération doit utiliser une requête qui peut être mise à jour.

    Erreur source:
    Ligne 80 : string insertCmd = "INSERT INTO Produit (Code_Produit,Libelle) VALUES ('" + Code + "','" + libelle + "')";
    Ligne 81 : OdbcCommand execute = new OdbcCommand(insertCmd, b);
    Ligne 82 : i = execute.ExecuteNonQuery();


    Voici mon code pour l'insertion dans la table:

    public int insert(string Code, string libelle)
    {
    int i;
    connection a = new connection();
    OdbcConnection b = a.connecter();
    b.Open();
    string voir = "Select Code_Produit From Produit Where Code_Produit='" + Code +"'";
    OdbcCommand sqlCommand = new OdbcCommand(voir, b);
    OdbcDataReader myReader = sqlCommand.ExecuteReader();
    if (myReader.HasRows)
    {
    i = -1;
    }
    else
    {
    string insertCmd = "INSERT INTO Produit (Code_Produit,Libelle) VALUES ('" + Code + "','" + libelle + "')";
    OdbcCommand execute = new OdbcCommand(insertCmd, b);
    i = execute.ExecuteNonQuery();
    }
    }

    b.Close();
    return (i);
    }

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Je ne comprends pas pourquoi ton code marche d'un côté mais pas de l'autre. Par contre, il est dangereux de passer la valeur du libellé directement via un string. Imagine qu'il y ait des virgules ou des apostrophes dans cette chaine, ou pire une commande SQL de type '... ; DELETE FROM Produit ; ...'.

    Il est plus fiable passer par des paramètres. Voici un exemple de code où on suppose de monCode et monLibelle sont des strings contenant les valeurs à insérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    OdbcConnection co = new OdbcConnection(chaineConnex.ConnectionString);
    OdbcCommand cmd = new OdbcCommand();
     
    cmd.Connection = co;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "INSERT INTO produit (code, libelle)"
                    + " VALUES ( ?, ?)";
     
    cmd.Parameters.Add("@code", OdbcType.VarChar, 20).Value = monCode;
    cmd.Parameters.Add("@libelle", OdbcType.VarChar, 50).Value = monLibelle;
     
    try
          {
           co.Open();
           cmd.ExecuteNonQuery();
           co.Close();
           }
    catch
           {
           // Ton traitement d'erreur si tu en as un.
           }
    Attention : l'ordre d'ajout des paramètres (ici code et libelle) doit être le même dans la requete SQL et dans les commandes cmd.Parameters.Add()

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Ta base Access doit être en lecture seule ou alors le user n'a pas les droits pour modifier

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

Discussions similaires

  1. UPDATE OR REPLACE: insertion ne fonctionne pas
    Par Timo31 dans le forum SQLite
    Réponses: 3
    Dernier message: 23/08/2011, 16h42
  2. LINQ to SQL] Tracer les requêtes SQL d'Insert/Update/Delete
    Par annalady dans le forum Accès aux données
    Réponses: 5
    Dernier message: 30/07/2009, 10h17
  3. Récupérer les erreurs Oracle pendant les insert/update/delete
    Par robinson50 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 05/03/2009, 11h44
  4. L'onglet "Insertion" ne fonctionne plus
    Par Medhi dans le forum Word
    Réponses: 1
    Dernier message: 15/05/2008, 18h20
  5. Réponses: 4
    Dernier message: 10/12/2006, 18h33

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