26. januar 2008 - 22:52Der er
13 kommentarer og 1 løsning
inserte image i db/dataset
Jeg har en database vor jeg har en billed tabel.
Den indeholder en Id (int) BilledData (image)
jeg prøver så at inserte i den men bliver ved med at få samme fejl
Jeg gør følgende:
' Load FileUpload's InputStream into Byte array Dim imageBytes(UploadFile.PostedFile.InputStream.Length) As Byte UploadFile.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length) ' myCommand.Parameters.AddWithValue("@ImageData", imageBytes)
Dim Vareadaptor2 As New Insert_VareTableAdapters.Billed_dataTableAdapter Dim m2 As Integer m2 = Integer.Parse(Pris.Text) Dim test As Integer = Vareadaptor2.InsertQuery(imageBytes)
Dim imgfile As Stream = New FileStream ("C:\blue.jpg", FileMode.Open) Dim siz As Integer = imgfile.Length Dim imgdata(siz-1) As Byte imgfile.Read(imgdata, 0, imgdata.Length) imgfile.Close Dim ins As SqlCommand = New SqlCommand ("INSERT INTO imgtest VALUES(@id,@img)", con) ins.Parameters.Add("@id", SqlDbType.Int) ins.Parameters.Add("@img", SqlDbType.Image) ins.Parameters("@id").Value = 1 ins.Parameters("@img").Value = imgdata ins.ExecuteNonQuery
Efter min mening er det ikke smart med billeder gemt i databasen da dit dataset/array/list eller hvad du bruger med tiden vil blive voldsomt stort og da det er serveren der tager sig af det ville jeg vælge kun at ligge en sti i databasen og så lade clienten/browseren tage sig af at loade billedet, men det er jo bare min mening om det ;o)
Der har i mange år været været en opfattelse af at det var en katastrofe at putte billeder i databasen og at det var meget bedre at gemme billederne som filer og kun gemme stien i databasen.
Jeg tror ikke på at det gælder med database og computere af idag. Jeg har et par gange lavet noget test af det og performance ved billeder i database var acceptabel. Og det har klart administrative fordele.
Bedste argument idag for ikke at gøre det er web hoteller med 1GB diskplads men kun 5 MB database plads.
jeg bruger nu den anden metode med at gemme det i en folder.
Gør følgende:
Dim filepath As String = UploadFile.PostedFile.FileName Dim pat As String = "\\(?:.+)\\(.+)\.(.+)" Dim r As Regex = New Regex(pat) 'run Dim m2 As Match = r.Match(filepath) Dim file_ext As String = m2.Groups(2).Captures(0).ToString() Dim filename As String = m2.Groups(1).Captures(0).ToString() Dim file As String = filename & "." & file_ext
'save the file to the server UploadFile.PostedFile.SaveAs(Server.MapPath("..\UploadPhoto\") & file) ' lblStatus.Text = "File Saved to: " & Server.MapPath(".\") & file
BAre hvis der er en anden der en dag finder dette....
arne_v >> Jeg mener heller ikke det er en katastrofe, men jeg vedligeholder pt. en stor internet shop hvor vi har lavet nogle test på det, her er der tale om 5000+ produkter med hver 1 lille og 3 store billeder.
Og der er klart forskel i hastigheden på at loade billeder fra database kontra fra disk.
Jeg lavede bl.a. en lille test med 25 KB billeder.
Resultatet var:
File (1 threads): 1,9 get per second File (10 threads): 2,1 get per second File with web app cache (1 threads): 16,8 get per second File with web app cache (10 threads): 17,8 get per second File directly by web server (1 threads): 17,6 get per second File directly by web server (10 threads): 20,1 get per second Database (1 threads): 10,7 get per second Database (10 threads): 11,6 get per second Database with web app cache (1 threads): 17,1 get per second Database with web app cache (10 threads): 19,5 get per second
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.