webForumDet fria alternativet

Dubbla rader i DB

.NET

1 svar · 494 visningar · startad av TomKarl

Medlem sedan okt. 200720 inlägg
Frågan#1

Hej!
Jag har en bilduppladdnings funktion som inte gör som jag vill. Det blir dubbla rader i databasen samt att filnamnet på thumben inte följer med, har inte lyckats klura ut hur jag plockar fram det.
Vad är galet?

/Tomas

    Protected Sub PictureUploadButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureUploadButton.Click
        
        If PictureUpload.HasFile Then
        

            Dim image As System.Drawing.Image = System.Drawing.Image.FromStream(PictureUpload.PostedFile.InputStream)

            ' save orginal image
            Dim fileName As String = Path.Combine(Server.MapPath("~/Uploads"), PictureUpload.FileName)
            If File.Exists(fileName) Then
                File.Delete(fileName)
            End If
            image.Save(fileName)
            
            Dim uplImg As String
            uplImg = PictureUpload.FileName
            

            ' create thumbnail
            Dim w As Single = image.PhysicalDimension.Width
            Dim h As Single = image.PhysicalDimension.Height
            Dim s As Single = Math.Max(h, w) ' pick the larger side
            Dim r As Single = IIf(s <= 64, 1.0, 64 / s) ' max width or height is 64 pixels
            ' scale the dimensions
            w *= r
            h *= r
            Dim thumb As System.Drawing.Image = image.GetThumbnailImage(w, h, AddressOf DoNothing, 0)

            ' save the thumbnail
            fileName = Path.Combine( _
                Server.MapPath("~/Uploads"), _
                String.Format("{0}_thm{1}", _
                    Path.GetFileNameWithoutExtension(PictureUpload.FileName), _
                    Path.GetExtension(PictureUpload.FileName) _
                ) _
            )
            If File.Exists(fileName) Then
                File.Delete(fileName)
            End If
            
            thumb.Save(fileName)
            
            Dim uplImgThmb As String
            uplImgThmb = PictureUpload.FileName
            
            ' Spara till DB
            Dim strConnectionString As String
            Dim strQuery As String
            Dim MyConnection As OdbcConnection
            Dim myCommand As OdbcCommand

        

            strConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=****; DATABASE=*****; UID=*****; PASSWORD=*****; OPTION=3"
            MyConnection = New OdbcConnection(strConnectionString)
            MyConnection.Open()
            strQuery = "INSERT INTO tbl_uplImg(imgName, imgThumb) VALUES (?, ?)"
    
            myCommand = New OdbcCommand(strQuery, MyConnection)
    
           
            myCommand.Parameters.AddWithValue("?", uplImg)
            myCommand.Parameters.AddWithValue("?", uplImgThmb)
   		
            myCommand.ExecuteNonQuery()
            MyConnection.Close()
           

        Else
            lblUpload.Text = ("Ingen bild uppladdad!")
            
        End If

    End Sub
Medlem sedan dec. 19996 721 inlägg
#2

Sätt namn på parametrarna

myCommand.Parameters.AddWithValue("blabla", uplImg)
myCommand.Parameters.AddWithValue("blublu", uplImgThmb)

Det spelar ingen roll för SQL-frågan, men för själva parameter-kollektionen.

Eller byt till MySqlClient (i stället för ODBC) och använd riktiga namngivna parametrar.

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)