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

C# Discussion :

[Winform] C# Oracle DateTime


Sujet :

C#

  1. #1
    Membre émérite Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Points : 2 645
    Points
    2 645
    Par défaut [Winform] C# Oracle DateTime
    Bonjour,

    Dans une requête insert, depuis C#, j'essaye d'enregistrer un repère temporel, sous la forme date + temps, dans une base de données Oracle, sous un champ de type DATE.


    Après 2 / 3 heures de recherche sur internet, J'ai essayé de faire ma requête de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    string requete = " INSERT INTO NOM_TABLE (Champs1, Champs2, ..., Champs_Date, ...) VALUES (" + Value1 + "," + Value2 + "," + ... + ToOracleSqlDate(System.DateTime.Now) + ... + ")";
    
    
    ....
    
     public string ToOracleSqlDate(DateTime dateTime)
            {
                return String.Format("to_date('{0}','dd.mm.yyyy hh24.mi.ss')", dateTime.ToString("dd.MM.yyyy hh:mm:ss"));
            }
    A l’exécution, j'obtiens l'erreur "ORA-1858: Caractère non numérique trouvé à la place d'un caractère numérique"

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    string requete = " INSERT INTO NOM_TABLE (Champs1, Champs2, ..., Champs_Date, ...) VALUES (" + Value1 + "," + Value2 + "," + ... + System.DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss") + ... + ")";
    Me revoir l'erreur "ORA-1830: Le modèle du format de date se termine avant la conversion de la chaîne d'entrée entière"


    Je ne comprends pas pourquoi j'ai ces erreurs.

    Que dois-je faire pour arriver à mes fins ?

    [EDIT]

    Il m'avait semblé que ça n'avait pas marché avant, mais maintenant ça fonctionne avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    
    string requete = " INSERT INTO NOM_TABLE (Champs1, Champs2, ..., Champs_Date, ...) VALUES (" + Value1 + "," + Value2 + "," + ... + System.DateTime.Now + ... + ")";
    Je me demande si c'est moi qui n’avait pas les yeux en face des trous (pebkac) ou si c'était autre chose.

    [/edit]
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Utilise les requêtes paramétrées (voir Tuto ou FAQ). En plus de te protéger contre les attaques par injection SQL, et de figer le plan d'exécution de la requête, cela permet de ne pas avoir à se préoccuper du format des données sous forme de string.

    Il faut les utiliser de partout, en toute circonstance.

    Petite info complémentaire, le préfixe "@" des paramètres est valable pour SQL Server. Pour Oracle il faut utiliser le préfixe semicolon ":".
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

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

Discussions similaires

  1. Format DateTime sous oracle
    Par Ice-tea dans le forum Oracle
    Réponses: 8
    Dernier message: 09/03/2016, 21h18
  2. [Doctrine] DateTime + Oracle 10g Date format
    Par swordi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/03/2012, 11h19
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

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