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

SQL Procédural MySQL Discussion :

Enregister doc dans champ table mysql


Sujet :

SQL Procédural MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Enregister doc dans champ table mysql
    Bonjour,

    Est-il possible d'enregister le contenu d'un fichier xml dans le champ d'une table? J'essais depuis quelque heures mais rien à faire, j'ai l'impression que le document contient trop de texte car si je n'en prend qu'une partie cela fonctionne.
    Pourtant mon champ et de type longtext, quelqu'un peut-il m'aidé ?


    Merci d'avance.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    La taille d'un champ est en général limitée (le plus souvent, en fonction de la SGBD, à 255 caractères)

  3. #3
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonjour,

    Il faudrait essayer de connaitre l'erreur qui est renvoyée par MySQL. La capacité des LONGTEXT est suffisament grande pour bien des fichier XML (cf:http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html), donc le problème ne vient peut-être pas du champ mais de la configuration du serveur. Mais pour en être sur, il faudrait connaitre l'ereur renvoyée.
    Pensez au tag

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    merci de vous interressez à mon cas.

    Malheureusement je n'est pas d'erreur renvoyée par mysql. Tous se passe sous vb, j'arrive à enregistrer du texte dans mon champ mais pas tout le document. De plus ce qui très étrange, c'est que sous phpmyadmin, en copiant/collant le contenu de mon fichier dans le champ ça marche très bien, mais sous vb , rien à faire.

    Faut-il précisé dans la requette qu'elle chose de plus pour un texte important?

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Oui ca se pourrait bien. D'ailleurs PHPMyAdmin a aussi ses limites lorsqu'il s'agit de transferer un texte long vers la base!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    En fait je viens de trouvé mon erreur.
    Mon fichier xml contient des commentaires, et certains commentaires on une ', c'est la que ça coince.

    Si mon doc xml contient une apostrophe, c'est fichu! l'enregistrement ne se fait pas, comment résoudre ce problème ? Je me permet de vous montrer un morceau du code:


    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
    Private Sub Command8_Click()
     
    Dim rs As MYSQL_RS
    Dim Buffer As String 'Contient le contenu de mon doc xml
    Dim max As Integer
    Dim ReqUpDate As String
    Dim NClient As String
    NClient = Text10.Text
     
    If conn.State = MY_CONN_OPEN Then
    conn.CloseConnection
    End If
     
     
    conn.OpenConnection ADOMYSQL1.MYSQLHOST, ADOMYSQL1.MYSQLLOGIN, ADOMYSQL1.MYSQLPASSWORD, ADOMYSQL1.MYSQLDATABASE, ADOMYSQL1.MYSQLPORT, ADOMYSQL1.MYSQLOPTION
     
    ReqUpDate = "UPDATE Client SET Rapport =  '" & Buffer & "' WHERE NumeroClient = '" & NClient & "'"
     
    Set rs = conn.Execute(ReqUpDate)
     
            rs.CloseRecordset
     
            conn.CloseConnection
     
    End Sub

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je viens de trouvé la solution à mon problème (oufff!!! :o )

    En fait il faut remplacé les caractères à échapper de la chaine, je place le code pour ceux que ça interresse

    La fonction addslashes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Function AddSlashes(ByRef sText As String) As String
     
    sText = Replace(sText, "\", "\\")
    sText = Replace(sText, Chr(34), "\" & Chr(34))
    sText = Replace(sText, "'", "\'")
    sText = Replace(sText, vbLf, "\n")
    sText = Replace(sText, vbCr, "\r")
    sText = Replace(sText, Chr(26), "\Z")
    AddSlashes = Replace(sText, Chr(0), "\0")
     
    End Function
    Et il ne reste plus qu'à transmettre votre chaine en index de la fonction dans votre requette sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReqUpDate = "UPDATE Client SET Rapport =  '" & AddSlashes(Buffer) & "' WHERE NumeroClient = '" & NClient & "'"

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

Discussions similaires

  1. Modifier la valeur d'un champs dans une table mysql en fonction du temps.
    Par VaSss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2010, 11h30
  2. Tester un champ dans une table mysql
    Par bullrot dans le forum C++Builder
    Réponses: 20
    Dernier message: 19/11/2007, 19h08
  3. [MySQL] Liste de champs dans une table MySQL
    Par Are-no dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/04/2007, 11h13
  4. Nombre d'enregistrement dans une table MySQL
    Par tom06440 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/10/2005, 19h07
  5. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 11h03

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