2009-05-11 4 views
0

Je sais comment insérer une nouvelle ligne dans une table qui a une colonne binaire. Mais est-il possible de mettre à jour la colonne binaire une fois que cette ligne a été ajoutée? Jusqu'à présent, une recherche google exhaustive n'a rien révélé.Est-il possible de mettre à jour un champ binaire dans SQL Server?

Ma solution à ce jour est ce

  1. Obtenez la ligne actuelle que je souhaite mettre à jour
  2. supprimer la ligne que je souhaite mettre à jour
  3. Créer une nouvelle ligne avec les informations de la ligne I souhaite mettre à jour plus le nouveau binaire

Cela ne semble pas très élégant, et j'espérais pouvoir faire la même chose avec une mise à jour.

Voici le code mis à jour, je me sers maintenant pour référence

Dim objCommand As New SqlCommand("UPDATE " & Tablename & " SET " _ 
& column & " = Data WHERE " & criteria) 
objCommand.Parameters.Add("@Data", SqlDbType.Image) 
objCommand.Parameters("@Data").Value = BinaryData 

Répondre

1

Jetez un oeil à this article à TechRepublic pour la technique. Vous devrez utiliser les méthodes GetBytes/PutBytes, beaucoup plus douloureuses que la plupart des codes ADO.Net. Voir également MSDN.

+0

Merci, ce premier article était exactement ce dont j'avais besoin. –

+0

Si oui, souhaitez-vous accepter la réponse? –

+0

Le lien vers l'article TechRepublic n'est pas valide (en date du 30/06/2014). – devinbost

0

INSERT BINARY/BYTES

INSERT INTO table_name 
(field_name) 
VALUES 
(4|8|16|32) 

MISE À JOUR BINARY/BYTES

UPDATE table_name 
SET field_name=field_name|8|16|32 
WHERE [email protected]_value 

REMARQUE: Une fois que le drapeau de l'octet est défini, vous ne pouvez pas le mettre à jour pour le supprimer. Donc, vous ne pouvez pas utiliser l'exemple UPDATE pour supprimer un octet qui a été réglé sur 4 et ensuite vouloir le changer en 8 il ajoute juste le 8 alors maintenant vous aurez 4 | 8. Il est également plus difficile de placer l'octet inversé que de le faire, ce n'est pas seulement UPDATE -4 | 8.

Il est plus facile d'interroger les résultats, Supprimer l'enregistrement et l'insérer comme un nouvel enregistrement avec les anciennes données (De la première requête) et reformaté avec les bons indicateurs d'octets.

Au moins c'est mon expérience limitée avec ce

Questions connexes