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

 Firebird Discussion :

[FB][BLOB] Comment Inserer un Blob (image) dans la base ?


Sujet :

Firebird

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut [FB][BLOB] Comment Inserer un Blob (image) dans la base ?
    Bonjour à tous,
    FirBird 1.5
    j'ai une table dont un champ est de type Blob subtype 0 et taille 30 Ko.
    Comment puis-je inserer des images de taille plus que 200 Ko dans ma base ? à titre d'indication taille max autorisé par ibExpert est 32 Ko!

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut Re: [FB][BLOB] Comment Inserer un Blob (image) dans la base
    Citation Envoyé par moucrack
    Bonjour à tous,
    FirBird 1.5
    j'ai une table dont un champ est de type Blob subtype 0 et taille 30 Ko.
    Ca veux dire quoi 30Ko ? On ne peut donner la taille d'un blob car par définition ils ont des contenus libres.

    Vous parlez peut etre de la taille du segment ?? Dans ce cas 30Ko c'est certainnement un peu trop, enfin faut voir avec le type de données que vous comptez enregistrer.


    Citation Envoyé par moucrack
    Comment puis-je inserer des images de taille plus que 200 Ko dans ma base ?
    Avec IbExpert (version enregistré) il y a un editeur de BLOB.

    Sinon les BLOB se créent par programmation. Sous Delphi par exemple il suffit d'utliser les FIELDs pour pouvoir créer un blob de toute pièce ou encore charger à partir d'un fichier. Cf le forum concerné, par votre langage car la technique n'est pas spécifiques à Fb ou interbase.

    Citation Envoyé par moucrack
    à titre d'indication taille max autorisé par ibExpert est 32 Ko!
    Merci de spécifier quel version vous utilisez (La version free) ?

    La version enregistrée n'a pas de limite de taille concernant les BLOBs...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Merci + Question
    Merci infinement de me repondre sur ma question mais j'ai déjà résolu le pb en inserant directement dans le champ blob dont le subtype = 0 : binary et non de subtype text!.
    Concernant le 32 Ko c'est la taille max du segment et c ne pas du BLOB! (désolé)
    je profite cette occasion et je repose ma question qui a déjà posé mais sans aucune reponse concrète!!??
    le question c'est Est ce que FireBird 1.5 différentie de la Casse ou non ?
    càd : Est-ce que FB 1.5 ignore la casse ou non?
    car lorsque j'insère dans un champ de type varchar (10) et de contrainte unique une chaîne qui est la même par exp :'Admin' et 'AdMin' il accepte le deux valeurs avec succès !!! c'est étonnant ??!!
    Comment puis je corriger cet "erreur" pour que FB 1.5 ignore la casse ?
    et Merci de me repondre .

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut Re: Merci + Question
    Citation Envoyé par moucrack
    Concernant le 32 Ko c'est la taille max du segment et c ne pas du BLOB! (désolé)
    Oui 32Ko c'est la taille max du segment et c'est ennorme ! Classiquement on utilise des tailles beaucoup plus petites. Et ce n'est pas une limitation de IBExpert, ne mélangez pas tout !

    Citation Envoyé par moucrack
    je profite cette occasion et je repose ma question qui a déjà posé mais sans aucune reponse concrète!!??
    le question c'est Est ce que FireBird 1.5 différentie de la Casse ou non ?
    càd : Est-ce que FB 1.5 ignore la casse ou non?
    car lorsque j'insère dans un champ de type varchar (10) et de contrainte unique une chaîne qui est la même par exp :'Admin' et 'AdMin' il accepte le deux valeurs avec succès !!! c'est étonnant ??!!
    Comment puis je corriger cet "erreur" pour que FB 1.5 ignore la casse ?
    et Merci de me repondre .
    Si vous n'avez pas eut de reponse c'est peut etre que vous faites fausse route. Et qu'en plus vous ne respectiez pas les règles de bon fonctionnement du forum. Vous aviez postez plusieurs fois votre problème, et au lieu de passer du temps (qui m'est compté en ce moment) à vous répondre, je l'ai passè à nettoyer le forum.


    Ce n'est pas parce que VOTRE BESOIN diffère du comportement de fb qu'il faut crier au BUG.

    C'est tout a fait normal et standard que la différence soit faite entre les majuscules et minuscules.

    Imaginez que vous enregistriez des mots de passes dans un varchar, trouveriez vous normal qu'il ne vous fasse pas de différence entre 'As4Ez2e' et 'AS4EZ2R' ?? 'masterkey' c'est différent de 'MASTERKEY' il me semble...

    Le probleme d'unicité n'est pas si facile que vous l'imaginez :

    Mais vous avez eut des débuts de solutions avec la préconisation de l'utilisation de 'UPPER'.

    Vous avez le choix entre insérer toujours en majuscule dans ce cas avec une contrainte d'unicité (si vous souhaitez garder la version minuscule vous l'enregistrez dans une autre colonne et à ce moment là vous pouvez même utilisez un trigger before update,insert qui se chargera d'alimenter la colonne avec contrainte d'unicité avec un simple ColonneMAJUnique= UPPER(ColonneMinuscule))

    Oubien vous faite un test dans un trigger before update/insert en recherchant s'il n'existe pas déjà un enregistrement et dans ce cas lever une exception. (La contrainte d'unicité étant donc ici inutile, un simple index suffit).

    La première solution est plus couteuse en place disque mais est plus performante, la seconde est moins couteuse en disque mais plus lourde en traitement lors des recherches.

    Voilà sur ce, je vous invite à lire et respecter les règles du forum, et de garder en tête qu'ici c'est de l'entre-aide bénévole et donc que chacun doit faire un effort pour que le forum reste une aide de qualité.

    Donc effectuer des recherches, poser des questions en décrivant le plus précisément le problème et contexte, et lorsqu'on débute avec un outil se dire que les problèmes qu'on rencontre ont certainement déjà été rencontrés par des personnes plus expérimentés. Si par bonheur on vous donne la solution il est préférable de signaler qu'elle fonctionne afin que celà profite aux suivants. Si vous trouvez par vous même c'est encore mieux, et dans ce cas nous serions heureux que vous vous répondiez afin que celà profite encore une fois aux suivants.

    Voilà en gros l'esprit.

    Si vous avez des difficultés à mettre en oeuvre une des deux pistes que je vous ai donné, je vous invite à reprendre le fil de votre sujet initial plutot que celui-ci.

    Merci

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Merci
    Merci Mr Barbille,
    Merci de me repondre.
    Vous avez le choix entre insérer toujours en majuscule dans ce cas avec une contrainte d'unicité (si vous souhaitez garder la version minuscule vous l'enregistrez dans une autre colonne et à ce moment là vous pouvez même utilisez un trigger before update,insert qui se chargera d'alimenter la colonne avec contrainte d'unicité avec un simple ColonneMAJUnique= UPPER(ColonneMinuscule))

    Oubien vous faite un test dans un trigger before update/insert en recherchant s'il n'existe pas déjà un enregistrement et dans ce cas lever une exception. (La contrainte d'unicité étant donc ici inutile, un simple index suffit).

    La première solution est plus couteuse en place disque mais est plus performante, la seconde est moins couteuse en disque mais plus lourde en traitement lors des recherches.
    Concernant vos deux solutions j'ai déjà reflichi à eux. Mais, ils ne sont pas performants.
    J'ai rencontré quelque part dans un forum qu'il existe un driver qui gère la casse des varchar. ce driver permet d'ajouter des nouveau charset des champ de type varchar (par exemple : charset = NO_CASE).
    je sais pas est ce que vous avez déjà entendu parlé de ça?

    Mais, ce driver n'est pas fonctionnel sous FB 1.5, il est compatible seulment avec FB 1.0!

    Y a t il une autre solution ?
    où est ce que vous connaissez un tel driver qui ignore la casse et qui est compatible avec FB 1.5 ?

    Merci d'avence.

    Voilà sur ce, je vous invite à lire et respecter les règles du forum, et de garder en tête qu'ici c'est de l'entre-aide bénévole et donc que chacun doit faire un effort pour que le forum reste une aide de qualité.
    J'accèpte votre invitation, et désolé si j'étais un peu dûr dans les autres forums!

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par moucrack
    Concernant vos deux solutions j'ai déjà reflichi à eux. Mais, ils ne sont pas performants.
    Pourquoi ??

    Un drivers ou un charset qui serait "case insensitive" fait à un moment donné un UPPER de la chaine afin de pouvoir la comparer. Et donc exactement ce que vous feriez soit dans votre programme soit dans votre trigger. L'écart de performance s'il est mesurable doit être petit a mon avis.

    Citation Envoyé par moucrack
    J'ai rencontré quelque part dans un forum qu'il existe un driver qui gère la casse des varchar. ce driver permet d'ajouter des nouveau charset des champ de type varchar (par exemple : charset = NO_CASE).
    je sais pas est ce que vous avez déjà entendu parlé de ça?
    http://www.brookstonesystems.com/
    ce n'est pas un qu'un driver, il modifie les tables systemes également sans compter que c'est disponnible que sous windows et plus maintenu depuis au moins 2/3 ans...

    Mais j'ai lu quelque part qu'il fonctionnait avec fb1.5, simplement comme fb1.5 n'utilise plus gdsintl.dll mais fbintl.dll, Ibcollate ne trouve pas la DLL.
    Il suffirait de faire un lien de fbintl.dll vers gdsintl.dll ou de copier simplement fbintl.dll en gdsintl.dll pour que celà fonctionne avec fb1.5.
    Je n'ai pas testé, car je ne suis pas interressé par des produits qui ne sont visiblements plus maintenu. Mais si vous essayez n'oubliez pas de nous faire part de votre expérience.

    Citation Envoyé par moucrack
    Mais, ce driver n'est pas fonctionnel sous FB 1.5, il est compatible seulment avec FB 1.0!

    Y a t il une autre solution ?
    où est ce que vous connaissez un tel driver qui ignore la casse et qui est compatible avec FB 1.5 ?
    Pas à ma connaissance, peut être fb2 apportera t il une solution avec l'ajout de collations "case insensitive".

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Solution ?
    Merci,
    Très bien, Vous avez trouvé le site que j'ai l'oublié !
    http://www.brookstonesystems.com/
    ce n'est pas un qu'un driver, il modifie les tables systemes également sans compter que c'est disponnible que sous windows et plus maintenu depuis au moins 2/3 ans...
    l'autre fois où j'ai visité ce site, j'ai téléchargé le driver (ibcollate) et malgès qu'il ne supporte pas fb 1.5 j'ai l'installé sur ce dernier (en mettant les dll sous le dossier intl du fb 1.5. (comme mentionné dans le fichier de config)

    les resulats :
    j'ai remarqué qu'il y a des nouveaux charset qui sont ajoutés comme FR_FR_NOCASE et d'autres. Et quand je change le charset de mon champ de type varchar, le FB 1.5 se plante!!


    Donc, pour le moment j'ai pas vraiment une très bonne solution comme celle du SQL Sever (il gère automatiquement la casse). En effet, qds vous avez un champ unique dans une table, le SGBD (exp SQL Server) ignore la casse. Et c'est ça qui a été demandé par tous les utilisateurs du SGBD.
    Et dans ce cas, quand vous voulez que le sgbd n'ignore pas la casse comme le cas du (mot de passe), tout simplement vous ne mettez pas la contrainte d'unicité sur le champ qui va contenir la valeur du mot de passe. Et on peut avoir même mot de passe pour plusieurs login, mais pas le contraire.

    Résumant, y a t il vraiment une solution concrète (autres que ceux déjà mentionnés tout au long du ce forum) sous fb 1.5 pour qu'il ignore la casse dans le cas où j'ai un champ de type varchar et de contrainte unique???? : .

    càd je veux avoir une solution comme seule des autres SGBD comme SQL Server, Oracle, ..
    Et s'il n 'ya pas d'autres solutions concrètes, est ce que on peut mentionner ça comme un Bug sous FB 1.5 ou non?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 33
    Points : 30
    Points
    30
    Par défaut y a t il une autre solution ?
    He Barbibulle où êtes-vous ?

    quel est votre prochaine reponse ?

    y a quelqu'un qui sait comment ignorer la casse sous firebird 1.5 ?? :

    Car vraiment j'ai besoins d'une solution très urgente (SVP). et Merci pour tous.

Discussions similaires

  1. inserer automatiquement une image dans une base
    Par paco503 dans le forum Langage
    Réponses: 4
    Dernier message: 02/05/2012, 12h29
  2. Comment inserer le chemin d'access à un image dans une base MYSQL
    Par d.ayuk33 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 30/12/2011, 14h38
  3. Réponses: 4
    Dernier message: 30/05/2011, 12h14
  4. Réponses: 1
    Dernier message: 07/03/2011, 16h02
  5. [WD-2003] Comment inserer automatiquement des images dans un tableau word
    Par grooveus75 dans le forum VBA Word
    Réponses: 2
    Dernier message: 06/01/2010, 12h37

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