Objektdaten werden anderem User zugeordnet

06/07/2009 - 20:58 von Mario Krsnic | Report spam
Hallo zusammen,
ich habe ein kleines turistischen Portal aufgebaut. Jeder Vermieter kann
seine Objekte speichern, mit Beschreibung und Bildern. Einige Anwender haben
sich (zum Glück) mit den Reklamationen gemeldet: sie finden ihre Objekte
nicht mehr, bzw. die Objekte werden falsch mit dem UserID anderer Anwender
gespeichert. In der Tabelle der DB sehe ich, dass es falsche Zuordnunge
wirklich gibt. Ich konnte ich mit meinen Testern nie nachvollziehen, aber
sie passieren. Das Portal wird auch von vielen Anwendern mit der
Modemverbindung erreicht. Möglicherweise passieren die Fehler nur bei
langsameren Internetverbindung.

Hier ist der Code und da ist irgendwo auch der Fehler. Bitte um Tips, wie
ich Fehler finden und beheben könnte.
Die Anwendung làuft auf dem Webserver 2008 mit SQL express DB 2008, erstellt
mit VS 2008:

Dim lastObjectID As String

Dim objInsertSqlQuery As String = ""
objInsertSqlQuery += " INSERT INTO [tblObject]"
objInsertSqlQuery += "([UserID]"
objInsertSqlQuery += "VALUES("
objInsertSqlQuery += "'" + Session("UserID").ToString() + "')"

lastObjectID = (db.maxID("tblObject", "ObjectID") -
1).ToString()

Dim picture1 As String = "NoImage.jpg"

If FileUpload1.PostedFile.ContentLength <> 0 Then
picture1 = "Seller_" & Session("UserID").ToString() &
"_Object_" & lastObjectID & "_1" &
FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("."c))
FileUpload1.PostedFile.SaveAs(Server.MapPath("~//ObjectImages//")
+ picture1)
_Img1.Src = Server.MapPath("~//ObjectImages//") + picture1
End If

Dim updateImage = "update tblObject set Picture1 = @Picture1,"
updateImage += "ObjectName = @ObjectName,"
updateImage += "ShortObjectDescription =
@ShortObjectDescription,"
updateImage += " DetailedObjectDescription =
@DetailedObjectDescription, "
updateImage += " where ObjectID =@ObjectID ;"

sqlCmd.Parameters.AddWithValue("@ObjectID", lastObjectID)
sqlCon.Open()

If sqlCmd.ExecuteNonQuery() > 0 Then
lblMsg.Text = "Ok!"
Else
lblMsg.Text = "Fehler!"
End If
sqlCon.Close()
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
06/07/2009 - 22:07 | Warnen spam
Hallo Mario,

"Mario Krsnic" schrieb:

Einige Anwender haben sich (zum Glück) mit den Reklamationen gemeldet: sie finden ihre Objekte nicht mehr, bzw. die Objekte werden
falsch mit dem UserID anderer Anwender gespeichert.



Eigentlich nur eine Frage:

Steht da irgendwo "Shared" in deinen Methoden, den Variablen wie bspw.
sqlCmd, sqlCon, ...? Falls ja, schmeiß "Shared" raus und arbeite mit
separaten Instanzen der Klassen.

Möglicherweise passieren die Fehler nur bei langsameren Internetverbindung.



Eher nicht. Mehr dann, wenn mehrere Benutzer gleichzeitig die entsprechenden
Methoden aufrufen

Dim objInsertSqlQuery As String = ""
objInsertSqlQuery += " INSERT INTO [tblObject]"
objInsertSqlQuery += "([UserID]"
objInsertSqlQuery += "VALUES("
objInsertSqlQuery += "'" + Session("UserID").ToString() + "')"



Das ist böse[TM]. Verwende SqlParameter. Durchgàngig.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen