Datenbank Updaten



  • Hast Du irgendwo ein Transaction Log von Deiner Datenbank? Viellleicht lässt sich daraus etwas entnehmen (ungenügende Schreibrechte etc...). "Systemfehler" klingt für mich auf den ersten Blick nach einem Problem, welches nicht direkt in Deinem Code zu finden ist.



  • hmmm wo kann ich da nachschauen?



  • Was genau hast Du für einen DB Server?



  • MS SQL SERVER 2005

    naja ... langsam hab ich das gefühl, dass es am syntax der UPDATE-funktion liegt ^^'

    weil meine suchfunktion (string strSQL = "SELECT * FROM IP_LIST WHERE IP=192.168.150." + tbIPs.Text + " ,FERTIG=j";) auch eine fehlermeldung hervorruft ^^'

    Eine nicht behandelte Ausnahme des Typs 'System.Data.SqlClient.SqlException' ist in system.data.dll aufgetreten.

    Zusätzliche Informationen: Systemfehler.

    leider hab ich die datenbank nich selbst gemacht
    alles sind chars (mit verschiedenen größen)



  • hast Du an die '' gedacht?



  • ja hab ich ... mir is eingefallen, dass ich ma über exceptions mal schauen kann ^^'

    er schmeißt mir das zurück:

    Parallelitätsverletzung : Der UpdateCommand hat sich auf 0 Datensätze ausgewirkt.



  • kann mir keiner helfen? ich hab mal im INET geschaut. es gab schon mal n fall mit dem fehler, (wegen der benennung der Table (wegen dem "_") ich habs so mal versucht, hat jedoch nicht geholfen oO'

    bitte um hilfe oO hock schon seit 3 tagen drann >_<



  • Nochmal zu der SELECT-Abfrage, die von Saruman angesprochenen '-Zeichen kann ich
    in deiner Abfrage nicht erkennen!?

    SELECT * FROM [IP_LIST] WHERE [IP]='192.168.150." + tbIPs.Text + "' ,FERTIG='j'
    

    ... aber wahrscheinlich hast du es auch so 🙄

    Hast du die Update-Query mal manuell im Query-Analyzer ausgefuehrt? Ich kann die Fehler dort oft besser finden, als in VS selbst.
    Eine Parallelitaetsverletzung zeigt normalerweise an, das der Datensatz waehrend du ihn bearbeitest schon von jemand anderem modifiziert wurde.
    Evtl. lohnt es sich hier mal mit Timestamps auseinanderzusetzen...

    //btw:
    die WHERE-Klausel spricht den PK oder den UIX an !?!?!?



  • mein aktulles (seit 3 tagen) Updatecommand lautet so:

    cmd = new SqlCommand("UPDATE "+ TableName +" SET RECHNER='"+cbRechner.SelectedItem.ToString()+"' WHERE IDNR='"+tbID.Text+"'",conn);
    

    soweit ich weiß (und seh) hat die tabelle kein Primary Key oO (is das möglich?)
    ....

    wo is genau der query Analyzer? (hab ja noch kaum ahnung von DB -.-')

    edit:
    durch weiterforschen bin ich hierrauf gestoßen:
    http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/cpguide/html/cpconoptimisticconcurrency.asp

    jedoch blick ich das nich durch o.O'
    ich versteh die parameter z.b. im C# - beispielcode nich:

    // The Update command checks for optimistic concurrency violations in the WHERE clause.
      custDA.UpdateCommand = new SqlCommand("UPDATE Customers (CustomerID, CompanyName) VALUES(@CustomerID, @CompanyName) " +
                                            "WHERE CustomerID = @oldCustomerID AND CompanyName = @oldCompanyName", nwindConn);
      custDA.UpdateCommand.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
      custDA.UpdateCommand.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 30, "CompanyName");
    
      // Pass the original values to the WHERE clause parameters.
      SqlParameter myParm;
      myParm = custDA.UpdateCommand.Parameters.Add("@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
      myParm.SourceVersion = DataRowVersion.Original;
      myParm = custDA.UpdateCommand.Parameters.Add("@oldCompanyName", SqlDbType.NVarChar, 30, "CompanyName");
      myParm.SourceVersion = DataRowVersion.Original;
    


  • Ist schon moeglich, dass es daran liegt, dass du nicht mit einem PK oder Index arbeitest - bin mir da aber nicht so sicher, da das bei mir immer der Fall ist.

    Vieleicht solltest du dir mal des PetShop-Projekt (inkl. DB) anschauen:
    http://www.gotdotnet.com/team/compare/codepetshop.aspx
    Ich orientiere mich bei meinen Projekten, was den Datenbank-Layer angeht, idR
    an den Components*-Klassen.

    *(Database.cs, Order.cs, ...)



  • ich muss leider sagen, dass es mir nich viel weiterhilft oO

    ich blick da leider noch nich durch



  • Vieleicht solltest du erstmal mit was kleinerem anfangen 😕
    Aber hier nochmal (wie fast immer) der Verweis auf meine
    Lieblingsseite (natuerlich nach dem c/c++ Forum):
    http://www.codeproject.com/cs/database/

    Wenn du garnicht weiterkommst, kann ich mir die DB aber auch gerne mal anschauen - natuerlich nur, wenn es kein TopSecret -Projekt ist 😉


Anmelden zum Antworten