Hej........... Du måste väl använda AppendChunk till dess att du kommit till slutet av filen? AppendChunk tar ju 8k i taget och lägger till. OK men den lagrade ju 8 bytes inte ens 8 kbytes vilket är det man skulle förväntat sig isåfall eller snarare 8000 bytes som ju så kallade paged data types kan lagra. Som heter vaddå ?!, Men jag tror jag skall skippa BLOB:s jag har fått Som heter vaddå ?!, Men jag tror jag skall skippa BLOB:s jag har fått Förkastlig? Vilken metod menar du då? Det är inget fel i sig att använda BLOBs, däremot kanske de används till felaktiga saker ibland. Jag citerar författaren av ovan nämnda bok -Hitchhiker's guide to visual basic and sql server. OK. Lite dumt uttalande av författaren tycker jag, precis som jag skrev ovan så tror jag han menar något annat än vad han skriver. Med "putting BLOBs in the database" pratar han om att lagra dokument & bilder i BLOB-fält i databasen, och anser då att man bör lösa det på annat sätt, t ex genom att lagra filen i filsystemet och sökvägen i databasen. Det kan jag väl hålla med om att det oftast är mer hanterligt och smartare, men det kan finnas fall där det inte är möjligt, t ex med vissa backupmässiga aspekter. OK, men det är inga problem då att för mig exvis lagra worddokument i Visst, det låter som en vettig användning. Men som sagt, filer i databasen innebär en del jobb, med exempelvis chunking eller streams.GetChunk / AppendChunk
Jag försöker lagra Word-dokument i en MSSQL databas. Använder
AppendChunk för att lagra dom och GetChunk för att hämta dom.
Jag får det dock inte att fungera riktigt. Den lagrar endast 8 bytes.
Jag använder lite exempelkod från boken: Hitchhiker's guide to Visual
Basic and SQL Server.
Här är min kodsnutt:
Sample Code ====================================
Dim CN as new ADODB.Connection
Dim RS As New ADODB.Recordset
Dim a() As Byte
Dim s As Long
CN.Open "test", "sa"
On Error Resume Next
CN.Execute "DROP TABLE myBLOBS"
CN.Execute "CREATE TABLE myBLOBS (ID int unique, info TEXT)"
On Error GoTo 0
ReDim a(FileLen("c:\test\SWEDEN 2B.DOC"))
Open "c:\test\SWEDEN 2B.DOC" For Binary Access Read As #1
Get #1, , a()
Close #1
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.Open "SELECT * FROM myBLOBS", CN
If RS.EOF Then RS.AddNew
RS("INFO").AppendChunk a()
RS.Update
RS.Close
CN.Close
==============================================
Varför lagrar den bara åtta bytes ??, Wordfilen är över 22000 bytes stor.
Hur skall man göra detta enklast ?Sv: GetChunk / AppendChunk
Om du använder ADO 2.5+ så föreslår jag dessutom att du tittar på Stream objektet, det är (åtminstone i mitt tycke) smidigare att lagra BLOBar med det. Kolla nedanstående KB för mer info:
http://support.microsoft.com/support/kb/articles/Q258/0/38.aspSv: GetChunk / AppendChunk
OK skall kolla länken.Sv: GetChunk / AppendChunk
indikationer som antyder att den metoden är förkastlig!
/peterhSv: GetChunk / AppendChunk
indikationer som antyder att den metoden är förkastlig!
/peterhSv: GetChunk / AppendChunk
Sv: GetChunk / AppendChunk
På Sid 513 skriver författaren.
- Before you commit to putting TEXT and IMAGE (BLOB) columns in
youre database, you need to take a big step back and think again.
I haven't heard of many implementations (OK i've heard of one) in
wich putting BLOBs in the database ended up making sense. I came to
the conclosion over the years by listening to the countless cries for
help from developers and their managers who had waded off into the
BLOB swamp and needed rescuing. In virtually all cases, we are able to
find faster, easier, and more supportable ways to access BLOB data and
none of them involved using the Chunk methods or storing the BLOB
data in the database. Sure you can put BLOBSs in youre database, and
u can also deliver pizza with a pregnant camel, but it's not something i would wish on most people.
Kanske färgat av författaren, men det ger kanske en hint om att det
inte är det bästa sättet att lösa det på.
/peterhSv: GetChunk / AppendChunk
Det är som sagt däremot inget problem med BLOB-fält i allmänhet, vilket han får det att låta som (genom att använda ordet BLOBs när han menar filer), själv har jag t ex använt dem till att lagra objektstrukturer som användes för processing i en extended procedure.Sv: GetChunk / AppendChunk
BLOB-fält (TEXT).
Problemet är följande:
På Dator A skall inte SQL-servern vara åtkomlig via filsystemet.
På servern ligger dock de wordfiler jag vill komma åt. Men det går
ju inte via normala sökvägar. Därför tänkte jag att om jag BLOBBAR in
dokumenten i databsen så löser jag problemet på det sättet.
När en fil skall vara åtkomlig så hämtas den och sparas lokalt på Dator A
Är detta the way eller ??? är jag ute på fel stickspår ?Sv: GetChunk / AppendChunk