begin process at 2012 02 13 23:25:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Bases de données

 > 

BLOB, SQL Server et... grosse galère !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

BLOB, SQL Server et... grosse galère !

lundi 27 octobre 2003 à 19:15:29 | BLOB, SQL Server et... grosse galère !

Abgraal

Bonjours à tous,

Voilà, je suis confronté à un (gros) problème : je dois extraire des images d'une base SQL server (6.5 en + !)

La structure de la table qui contient les images est la suivante :
image_data1 : image (16)
image_data2 : varbinary (255)
image_data3 : varbinary (255)
image_data4 : varbinary (255)
image_data5 : varbinary (255)
image_data6 : varbinary (255)
image_data7 : varbinary (255)
image_data8 : varbinary (255)

La valeur d'image_data1 est parfois à null (??)

C'est tout ce que j'ai comme info, on m'a refilé le bébé "brut de fonderie..."

Quelqu'un sait comment extraire les données de ce type de structure avec VB ??
Je n'y arrive pas :(

Merci.


mardi 28 octobre 2003 à 09:32:34 | Re : BLOB, SQL Server et... grosse galère !

3Pom

Membre Club
Voilà j'espere ke ca pourra t'aider.

Const BLOCK_SIZE = 16384

Public Sub BlobToFile(ByRef Fld As ADODB.Field, _
ByVal FName As String, _
Optional FieldSize As Long = -1, _
Optional Threshold As Long = 1048576)
Dim F As Long
Dim bData() As Byte
Dim sData As String

' Assumes file does not exist
' Data cannot exceed approx. 2Gb in size

F = FreeFile
Open FName For Binary As #F
Select Case Fld.Type
Case adLongVarBinary
If FieldSize = -1 Then ' blob field is of unknown size
WriteFromUnsizedBinary F, Fld
Else ' blob field is of known size
If FieldSize > Threshold Then ' very large actual data
WriteFromBinary F, Fld, FieldSize
Else ' smallish actual data
bData = Fld.Value
Put #F, , bData ' PUT tacks on overhead if use fld.Value
End If
End If
Case adLongVarChar, adLongVarWChar
If FieldSize = -1 Then
WriteFromUnsizedText F, Fld
Else
If FieldSize > Threshold Then
WriteFromText F, Fld, FieldSize
Else
sData = Fld.Value
Put #F, , sData ' PUT tacks on overhead if use fld.Value
End If
End If
End Select
Close #F
End Sub

Private Sub WriteFromBinary(ByVal F As Long, _
ByRef Fld As ADODB.Field, _
ByVal FieldSize As Long)
Dim Data() As Byte
Dim BytesRead As Long

Do While FieldSize <> BytesRead
If FieldSize - BytesRead < BLOCK_SIZE Then
Data = Fld.GetChunk(FieldSize - BLOCK_SIZE)
BytesRead = FieldSize
Else
Data = Fld.GetChunk(BLOCK_SIZE)
BytesRead = BytesRead + BLOCK_SIZE
End If
Put #F, , Data
Loop
End Sub

Private Sub WriteFromUnsizedBinary(ByVal F As Long, _
ByRef Fld As ADODB.Field)
Dim Data() As Byte
Dim Temp As Variant

Do
Temp = Fld.GetChunk(BLOCK_SIZE)
If IsNull(Temp) Then Exit Do
Data = Temp
Put #F, , Data
Loop While LenB(Temp) = BLOCK_SIZE
End Sub

Private Sub WriteFromText(ByVal F As Long, _
ByRef Fld As ADODB.Field, _
ByVal FieldSize As Long)
Dim Data As String
Dim CharsRead As Long

Do While FieldSize <> CharsRead
If FieldSize - CharsRead < BLOCK_SIZE Then
Data = Fld.GetChunk(FieldSize - BLOCK_SIZE)
CharsRead = FieldSize
Else
Data = Fld.GetChunk(BLOCK_SIZE)
CharsRead = CharsRead + BLOCK_SIZE
End If
Put #F, , Data
Loop
End Sub

Private Sub WriteFromUnsizedText(ByVal F As Long, _
ByRef Fld As ADODB.Field)
Dim Data As String
Dim Temp As Variant

Do
Temp = Fld.GetChunk(BLOCK_SIZE)
If IsNull(Temp) Then Exit Do
Data = Temp
Put #F, , Data
Loop While Len(Temp) = BLOCK_SIZE
End Sub

' Assumes file exists
' Assumes calling routine does the UPDATE
' File cannot exceed approx. 2Gb in size
Public Sub FileToBlob(ByVal FName As String, _
ByRef Fld As ADODB.Field, _
Optional Threshold As Long = 1048576)
Dim F As Long
Dim Data() As Byte
Dim FileSize As Long

F = FreeFile
Open FName For Binary As #F
FileSize = LOF(F)
Select Case Fld.Type
Case adLongVarBinary
If FileSize > Threshold Then
ReadToBinary F, Fld, FileSize
Else
Data = InputB(FileSize, F)
Fld.Value = Data
End If
Case adLongVarChar, adLongVarWChar
If FileSize > Threshold Then
ReadToText F, Fld, FileSize
Else
Fld.Value = Input(FileSize, F)
End If
End Select
Close #F
End Sub

Private Sub ReadToBinary(ByVal F As Long, _
ByRef Fld As ADODB.Field, _
ByVal FileSize As Long)
Dim Data() As Byte
Dim BytesRead As Long

Do While FileSize <> BytesRead
If FileSize - BytesRead < BLOCK_SIZE Then
Data = InputB(FileSize - BytesRead, F)
BytesRead = FileSize
Else
Data = InputB(BLOCK_SIZE, F)
BytesRead = BytesRead + BLOCK_SIZE
End If
Fld.AppendChunk Data
Loop
End Sub

Private Sub ReadToText(ByVal F As Long, _
ByRef Fld As ADODB.Field, _
ByVal FileSize As Long)
Dim Data As String
Dim CharsRead As Long

Do While FileSize <> CharsRead
If FileSize - CharsRead < BLOCK_SIZE Then
Data = Input(FileSize - CharsRead, F)
CharsRead = FileSize
Else
Data = Input(BLOCK_SIZE, F)
CharsRead = CharsRead + BLOCK_SIZE
End If
Fld.AppendChunk Data
Loop
End Sub
mardi 28 octobre 2003 à 10:42:09 | Re : BLOB, SQL Server et... grosse galère !

Abgraal

Merci beaucoup mais...
Ce code ne prend en compte que le longvarbinary (type 205) et mes champs sont de type varbinary (type 204).

Il ne passe donc pas dans le select case fld.type... Et ne traite donc rien.

Quelqu'un aurait-il déjà extrait du varbinary d'une base SQL Server ?




vendredi 2 juillet 2004 à 12:38:45 | Re : BLOB, SQL Server et... grosse galère !

morettob


Salut !
J'ais actuellement le meme probleme que toi concernant le traitement de jpg dans une base sql server. Je souhaite stocker des jpg en varbinary ds ma base, si tu as un petit bout de code.....je suis preneur.
Thks.


Cette discussion est classée dans : sql, server, image, blob, varbinary


Répondre à ce message

Sujets en rapport avec ce message

Problème image dans sql server [ par math083 ] Salut tout le mondeJ'ai encore un petit soucisJ'ai une form avec un contrôle adodc (nommé adodc1) et un formulaire. A un moment je souhaite sauvegarde Image SQL server sur excel [ par bob10 ] Bonjour à tous, j'ai une base de données SQL server dans laquelle il y a des champs aux format image. Le truc c'est queje voudrais afficher ces photos image dans base donne sql server [ par gustar ] salut je voudrais s'avoir comment on peut inserer des images dans une champs de la base donne sql avec type ? inserer et selectionner une image avec ADO.NET et sql server [ par juguinfo ] Salut tout le monde, j'i un pronlème de selection d'une image à partir de la on utilisant le datareader ou le dataset. mais actuellement je prefere de stocker une image dans une BD SQL_Server [ par spameur_tn1 ] bonjour je voudrais savoir comment enregistrer une image dans une base de données SQL_Server. autrement comment convertir l'image en format numérique image texte et son [ par ouidad02 ] slt tout le monde pour enregestrer une image et un son et un texte sur la base de donnee sql server 2008 chaque image doit affiché avec un texte qui SQL Server CE Question de fonctionnement [ par LordOfTheShadow ] Bonjour à tous, J'ai fait une base de données sous SQL Server CE dans Visual Studio (ça correspond à un truc du genre maBase.sdf). Quand je rentre d Récuperer les instance sql server à partir d'Access 2003/VB6 [ par FNIAMKE ] Bonsoir Mme/Mr. Je souhaite récupérer les instances de sql server dans une liste/combobox à partir d'Access 2003/VB6. Merci de votre assistance. N Connexion à distance à sql server 2008 / sql server 2005 [ par koneangel ] Bonjour à tous En fait, j'ai un souci lorsque je me connecte à mon mon serveur de base de données (Sql server 2005 express ou Sql server 2008 enterpr


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,084 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales