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 :

Requete SQL avec heure


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 66
    Points : 37
    Points
    37
    Par défaut Requete SQL avec heure
    Bonsoir,

    Je souhaite faire un programme qui récupère une heure avec un DateTimePicker et qui l'ajoute dans ma base de données access. Mais le compilateur me dit
    Type de données incompatible dans l'expression du critère.
    Je me demandais donc si comme la date il y avait un format spécifique ?

    PS: Désolé si je ne suis pas dans la bonne section, je ne savais pas trop où aller.

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il ne faut pas mettre la date directement dans la requête, il faut utiliser une requête paramétrée. Comme ça tu n'as pas à te préoccuper du format.
    http://webman.developpez.com/article...rameter/vbnet/

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Merci pour ta réponse. Je pense que j'ai utilisé ce dont tu parle. Voici ma fonction INSERT dans mon code :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public string Insert(string film_nom, string film_date_sortie, string film_reasilateur, string film_nationalite, string film_dure, int film_note_presse, int film_note_spectateur, int film_acteur1, int film_acteur2, int film_acteur3, int film_genre1, int film_genre2, bool film_dispo)
            {
                this.rq_sql = "INSERT INTO TB_FILM ([film_nom], [film_date_sortie], [film_reasilateur], [film_nationalite], [film_dure], [film_note_presse], " +
                "[film_note_spectateur], [film_acteur1], [film_acteur2], [film_acteur3], [film_genre1], [film_genre2], [film_disponible]) " +
                "VALUES ('" + film_nom + "'," + film_date_sortie + ",'" + film_reasilateur + "','" + film_nationalite + "'," + film_dure + "," + film_note_presse + "," + film_note_spectateur + "," +
                film_acteur1 + "," + film_acteur2 + "," + film_acteur3 + "," + film_genre1 + "," + film_genre2 + ",'" + film_dispo + "');";
                return this.rq_sql;
            }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Carlito08 Voir le message
    Je pense que j'ai utilisé ce dont tu parle
    Dans ce cas je ne pense pas que tu aies lu le lien que je t'ai donné
    (en voilà un autre, en C# cette fois)

    Ce n'est pas du tout ce dont je parle, et c'est exactement le contraire de ce qu'il faut faire... Avec cette façon de faire, tu vas avoir plein de problèmes avec le format des nombres et des dates, les caractères spéciaux dans les chaines, et surtout de gros problèmes de sécurité (injection SQL)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Re,

    Ok, je te remercie pour ta réponse si rapide, je vais regardé à sa et je te tiens au courant.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    J'ai essayé ce que tu m'as dit mais je n'y arrive pas, il ne remplace pas les paramètres donc il me dit que la requête ne contient aucun paramètre.

    Voila ce que j'ai mis après la création de la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    OleDbCommand cmd_sql = new OleDbCommand(this.rq_sql, oData.oCNX);
    cmd_sql.Parameters.Add(new OleDbParameter("@film_nom", OleDbType.Char, 25));
    cmd_sql.Parameters["@film_nom"].Value = film_nom;
    Merci

  7. #7
    Invité
    Invité(e)
    Par défaut
    il faut que tu insères tes paramètre dans ta requête

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from table where id=@ID
    Dans ce cas là tu as une paramètre qui est @ID

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Re,

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "INSERT INTO [TB_FILM] ([film_nom], [film_date_sortie], [film_reasilateur], [film_nationalite], [film_dure], [film_note_presse], " +
                "[film_note_spectateur], [film_acteur1], [film_acteur2], [film_acteur3], [film_genre1], [film_genre2], [film_disponible]) " +
                "VALUES (@film_nom, @film_date_sortie, @film_reasilateur, @film_nationalite, @film_dure, @film_note_presse, @film_note_spectateur, @film_acteur1, @film_acteur2, @film_acteur3, @film_genre1, @film_genre2, @film_dispo);
    Merci

  9. #9
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Voilà ta requête, certes, mais quel est le problème désormais ?

    Poste un peu plus de code : notamment la déclaration de ta SQLCommand et de ses SQLParameters.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Le problème est que lorsqu'il veut exécuter la commande il me dit qu'il n'y a aucun paramètre.
    Je ne vois pas ce que tu veux dire par
    déclaration SQLCommand et de ses SQLParameters.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Je pense avoir compris mon problème. De ce que j'ai vu il faut utilisé la bibliothèque SqlClient pour faire la connexion à la base de données ainsi que pour les requêtes paramétrées. Mais dans mon code, pour la connexion j'utilise la bibliothèque OleDb...

    Est ce bien cela mon problème ?

    Merci

  12. #12
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    poste ton code complet (oledbconnection,oledbcommand etc.)
    tu n'es pas loin du compte...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Voici ma classe Data :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    class CL_data
        {
            //-- Déclaration des objets qui permettront les connections, la récupération de données depuis la BDD... --//
            private string rq_sql; //chaine requete SQL
            private string cnx; //chaine de connection
            public System.Data.OleDb.OleDbConnection oCNX; //objet de connection
            private System.Data.OleDb.OleDbCommand oCMD; //objet de commande
            private System.Data.OleDb.OleDbDataAdapter oDA; //objet dataAdapter
            private System.Data.DataSet oDS; //objet dataset
     
     
            //-- Définition des méthodes --//
            public CL_data()
            {
                this.rq_sql = "";
                this.cnx = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Carlito\Desktop\Programme\dvdtheque\WindowsFormsApplication2\BDD_film.accdb"; //On établit la connection avec la BDD
                this.oCNX = new System.Data.OleDb.OleDbConnection(this.cnx); //l'objet de connection est construit avec en paramètre, la chaine ci-dessus.
                this.oCMD = new System.Data.OleDb.OleDbCommand();
                this.oDA = new System.Data.OleDb.OleDbDataAdapter();
     
            }
     
            //-- Setters --//
            public void m_ActionsRows(string rq_sql)
            {
                this.rq_sql = rq_sql;
                this.oCMD.Connection = this.oCNX;
                this.oCMD.CommandText = this.rq_sql;
                this.oCNX.Open();
                this.oCMD.ExecuteNonQuery();
                this.oCNX.Close();
            }
     
            //-- Getters --//
            public System.Data.DataSet m_GetRows(string rq_sql, string rows_name)
            {
                this.oDS = new System.Data.DataSet();
                this.rq_sql = rq_sql;
                this.oCMD.Connection = this.oCNX;
                this.oCMD.CommandText = this.rq_sql;
                this.oDA.SelectCommand = this.oCMD;
                this.oDA.Fill(this.oDS, rows_name);
                return this.oDS;
            }
        }
    Merci

  14. #14
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par Carlito08 Voir le message
    Bonjour,
    //-- Getters --//
    public System.Data.DataSet m_GetRows(string rq_sql, string rows_name)
    {
    this.oDS = new System.Data.DataSet();
    this.rq_sql = rq_sql;
    this.oCMD.Connection = this.oCNX;
    this.oCMD.CommandText = this.rq_sql;
    this.oDA.SelectCommand = this.oCMD;
    this.oDA.Fill(this.oDS, rows_name);
    return this.oDS;
    }
    heu... c'est quoi rows_name ?
    "C'est tellement merdique que toute modification est une amélioration !"

Discussions similaires

  1. Requete SQL avec Rand()
    Par leloup84 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/02/2006, 17h41
  2. requete SQL avec valeur max
    Par oeil de nuit dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2006, 09h58
  3. REQUETE SQL AVEC HAVING
    Par juju_77 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 05/08/2005, 10h49
  4. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 12h18
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 15h40

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