| |
VB & DatenbankenBild in 64K Schritten in SQL-Datenbank speichern | | | Autor: Akop | Datum: 27.10.11 11:55 |
| Hallo,
ich bin neu was VB6 angeht.
Jetzt habe ich folgendes Problem:
Ich soll ein Bild in die QSL-datenbank schreiben, das habe ich hingekriegt, aber jetzt soll ich es in 64K schritten machen und den schreibstatus anzeigen. Das gleiche gilt dan auch fürs auslesen.
Kann mir da jemand helfen?
Danke in vorraus | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: wb-soft | Datum: 27.10.11 12:08 |
| Hi!
Kannst du einmal genauer erklären, was du erreichen willst? Interessant wäre auch warum.
mfg
WB | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: Akop | Datum: 27.10.11 12:34 |
| Warum ist einfach, so will es mein Boss
Also, ich will das wenn ein Bild in datenbank geschrieben wird, oder aus dem DB ausgelen wird, das es in 64K Schritten(bzw. Blöcken) passiert und nach jedem Schritt(Block), soll die ProgressBar aktualisiert werden.
Das mit Schreiben und Auslesen habe ich hingekriegt.
Nur halt nicht in 64K Schritten
Beitrag wurde zuletzt am 27.10.11 um 12:40:48 editiert. | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: wb-soft | Datum: 27.10.11 15:59 |
| Hi!
OK, das Wort des Chefs ist Gesetz.
Jetzt beschreib einmal wie du die Bilder jetzt speicherst.
Welche DB verwendest du?
mfg
WB | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: Akop | Datum: 27.10.11 16:10 |
| Ich verwende Sybase v7 datenbank system, local installiert
Bitte nicht zu streng bewerten, VB vor 3 Wochen zum ersten mal gesehen
Dim conArbeitsdatenbank As New ADODB.Connection ' DB-Verbindung
Dim recsetDbAntwort As New ADODB.Recordset ' DB_Antwort
Dim l_sFile As New ADODB.Stream 'Dateistream um das Bild hochzuladen
With l_sFile
.Type = adTypeBinary
.Open
.LoadFromFile ofdOpenFoto.FileName
End With
Set recsetDbAntwort = New ADODB.Recordset
recsetDbAntwort.Source = "Select id, bild From pers"
recsetDbAntwort.CursorLocation = adUseServer
recsetDbAntwort.CursorType = adOpenDynamic
recsetDbAntwort.LockType = adLockOptimistic
recsetDbAntwort.Open , conArbeitsdatenbank
While Not recsetDbAntwort.EOF And Not recsetDbAntwort.BOF And _
recsetDbAntwort.Fields("id") <> l_lId
recsetDbAntwort.MoveNext
Wend
recsetDbAntwort.Fields("bild") = l_sFile.Read
l_sFile.Close
recsetDbAntwort.UpdateBatch | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: wb-soft | Datum: 27.10.11 20:23 |
| Hi!
In der guten alten Zeit wurde das mit AppendChunk und GetChunk gemacht. Mit der Einführung des Stream-Objektes ist das aber kaum mehr ein Thema.
Mit Streams habe ich keine Erfahrung. Ich kenne keine Möglichkeit, die Blockgröße zu beinflussen.
Wenn dein Chef darauf besteht, greif zur alten Methode. Ein Beispiel gibt es in der Hilfe.
mfg
WB | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: wb-soft | Datum: 27.10.11 21:57 |
| Hi!
Noch eine Idee, die allerdings nicht von mir stammt:
Die Kombination von AppendChunk und Stream.Read.
Im Klartext nach diesem System:
Recordset!Field.AppendChunk Stream.Read(Blocksize) Das Ganze in einer Schleife, bis der Stream abgearbeitet ist.
Wie gesagt, nicht meine Idee.
Keine Ahnung, ob das wirklich funktioniert.
Falls das klappt, gib mir Bescheid. Dann habe ich wieder was gelernt.
mfg
WB | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: Akop | Datum: 28.10.11 08:35 |
| OK, Danke, werde sofort ausprobieren, und dann gib ich es dir bescheid | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: Akop | Datum: 28.10.11 09:14 |
| Es funktioniert perfekt, danke vielmals | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: wb-soft | Datum: 28.10.11 11:28 |
| Hi!
Freut mich, daß es funktioniert. Dabei habe ich auch was dazugelernt.
Noch ein Satz zu deinem Code:
In Bezug auf Performance und Ressourcenschonung gibt es Verbesserungsmöglichkeiten.
Wenn du einen bestimmten Datensatz bearbeiten willst, öffne ein Recordset mit diesem einen Datensatz. Damit wird weniger Speicher belegt, es entsteht weniger Traffic, und du ersparst dir die Schleife zum Suchen des Datensatzes.
In weiter Folge kannst du, falls der gesuchte Datensatz nicht existiert, einen Neuen anlegen.
mfg
WB | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: Akop | Datum: 28.10.11 12:16 |
| Danke für den Tipp,
werde sofort machen | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: wb-soft | Datum: 28.10.11 12:29 |
| Hi!
Hab noch was vergessen:
UpdateBatch ist eigentlich für den Fall, daß mehrere Änderungen gemacht wurden.
Bei einem Datensatz genügt Update. Anscheinend hat es aber keine negative Auswirkung.
mfg
WB | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: Akop | Datum: 28.10.11 14:35 |
| Noch mal danke,
aber bei Update tut sich bei mir rein gar nix. | |
Re: Bild in 64K Schritten in SQL-Datenbank speichern | | | Autor: wb-soft | Datum: 28.10.11 15:48 |
| Hi!
Seltsam, aber wie gesagt scheint es mit UpdateBatch keine negativen Auswirkungen zu haben.
Laß es ganz einfach so. Die Hauptsache ist, daß es funktioniert.
mfg
WB | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|