Insérer/mettre à jour TBlobfield (aka image) à l'aide de paramètres sql
Je veux stocker des images dans une base de données en utilisant sql, mais ne peut pas sembler obtenir que cela fonctionne:
qry.SQL.Clear;
qry.Sql.Add('update tbl set pic = :blobVal where id = :idVal');
qry.Parameters.ParamByName('idVal')._?:=1;
.Paramètres n'a pas d' .asinteger comme .Param a mais .Param n'est pas compatible avec un TADOquery - pour contourner ce problème, j'ai essayé:
a_TParameter:=qry.Parameters.CreateParameter('blobval',ftBlob,pdinput,SizeOf(TBlobField),Null);
a_TParam.Assign(a_TParameter);
a_TParam.asblob:=a_Tblob;
qry.ExecSql;
Ce n'est pas le travail:
qry.SQL.Clear;
qry.Sql.Add('update tbl set pic = :blobVal where id = 1')
qry.Parameters.ParamByName('blobVal').LoadFromStream(img as a_TFileStream,ftGraphic);//ftblob
//or
qry.Parameters.ParamByName('blobVal').LoadFromFile('c:\sample.jpg',ftgrafic);//ftblob
qry.ExecSql;
jetez un oeil à delphi.about.com/od/database/l/aa030601a.htm ou delphi.about.com/library/nosearch/npf030601.htm
OriginalL'auteur Rayman | 2013-10-01
Vous devez vous connecter pour publier un commentaire.
Doit être quelque chose comme:
À lire le BLOB de retour à partir de la DB:
J'ai fait un edit (vous n'avez probablement pas spécifié
idVal
paramètre). essayez-le maintenant. fonctionne très bien pour moi.grâce travaille maintenant 🙂
OriginalL'auteur kobik
Je suis en utilisant Lazare, pas de Delphi, mais je suppose que c'est généralement la même syntaxe. Si oui, voici une légère amélioration sur kobiks suggestion:
Paramètres sont ajoutés automatiquement si le SQL.Le texte est attribué avant d'essayer d'attribuer des valeurs aux paramètres. Comme ceci:
OriginalL'auteur kapibara
J'ai écrit cela comme une réponse à ce q,
Delphi enregistrer paniers enregistrer en tant que blob dans une base de données sql
ce qui est actuellement considéré comme un double, peut-être mal parce que la technique
utilisé par les OP comme décrit dans les commentaires semble être correcte. Donc, la cause du problème réside peut-être ailleurs.
Si le Double drapeau est supprimée, je vais re-poster cette réponse là.
Le code suivant fonctionne très bien pour moi à l'encontre d'une table Sql Server définis comme indiqué ci-dessous.
Les données de Rec1 est enregistré dans la table et correctement lu en Rec2.
Extrait de DFM
OriginalL'auteur MartynA