Scripting - Tuning in Datenbank eintragen

04. Dezember 2017
7
0
1
21
Hallo ich würde mit der Resource SimpleRoleplay gerne beim Fahrzeug einparken die Tuning Daten in die Datenbank eintragen beim ausparken werde die Tuning teile schon aus der Datenbank auf das Auto gesetzt aber nicht vom Auto in die Datenbank hier ist mein nicht Funktionierender Code

Code:
public static void UpdateMods(OwnedVehicle ownedVehicle)
       {
           Dictionary<string, string> parameters = new Dictionary<string, string>
           {
               { "@Spoiler", ownedVehicle.ActiveHandle.getMod(0).ToString() },
               { "@FrontBumper", ownedVehicle.ActiveHandle.getMod(1).ToString() },
               { "@RearBumper", ownedVehicle.ActiveHandle.getMod(2).ToString() },
               { "@SideSkirt", ownedVehicle.ActiveHandle.getMod(3).ToString() },
               { "@Exhaust", ownedVehicle.ActiveHandle.getMod(4).ToString() },
               { "@Frame", ownedVehicle.ActiveHandle.getMod(5).ToString() },
               { "@Grill", ownedVehicle.ActiveHandle.getMod(6).ToString() },
               { "@Hood", ownedVehicle.ActiveHandle.getMod(7).ToString() },
               { "@Fender", ownedVehicle.ActiveHandle.getMod(8).ToString() },
               { "@RightFender", ownedVehicle.ActiveHandle.getMod(9).ToString() },
               { "@Roof", ownedVehicle.ActiveHandle.getMod(10).ToString() },
               { "@Engine", ownedVehicle.ActiveHandle.getMod(11).ToString() },
               { "@Brakes", ownedVehicle.ActiveHandle.getMod(12).ToString() },
               { "@Transmission", ownedVehicle.ActiveHandle.getMod(13).ToString() },
               { "@Horn", ownedVehicle.ActiveHandle.getMod(14).ToString() },
               { "@Suspension", ownedVehicle.ActiveHandle.getMod(15).ToString() },
               { "@Armor", ownedVehicle.ActiveHandle.getMod(16).ToString() },
               { "@Turbo", ownedVehicle.ActiveHandle.getMod(18).ToString() },
               { "[USER=8755]@xenon[/USER]", ownedVehicle.ActiveHandle.getMod(22).ToString() },
               { "@FrontWheels", ownedVehicle.ActiveHandle.getMod(23).ToString() },
               { "@BackWheels", ownedVehicle.ActiveHandle.getMod(24).ToString() },
               { "@PlateHolder", ownedVehicle.ActiveHandle.getMod(25).ToString() },
               { "@TrimDesign", ownedVehicle.ActiveHandle.getMod(27).ToString() },
               { "@Ornaments", ownedVehicle.ActiveHandle.getMod(28).ToString() },
               { "@DialDesign", ownedVehicle.ActiveHandle.getMod(30).ToString() },
               { "@SteeringWheel", ownedVehicle.ActiveHandle.getMod(33).ToString() },
               { "@ShiftLever", ownedVehicle.ActiveHandle.getMod(34).ToString() },
               { "@Plaques", ownedVehicle.ActiveHandle.getMod(35).ToString() },
               { "@Hydraulics", ownedVehicle.ActiveHandle.getMod(38).ToString() },
               { "@Plate", ownedVehicle.ActiveHandle.getMod(62).ToString() },
               { "@WindowTint", ownedVehicle.ActiveHandle.getMod(69).ToString() },
               { "@DashboardColor", ownedVehicle.ActiveHandle.getMod(74).ToString() },
               { "@TrimColor", ownedVehicle.ActiveHandle.getMod(75).ToString() }
           };

           DataTable result = DatabaseHandler.ExecutePreparedStatement("UPDATE ownedvehicles SET Spoiler = @Spoiler, FrontBumper = @FrontBumper, RearBumper = @RearBumper, SideSkirt = @SideSkirt, SideSkirt = @SideSkirt, Exhaust = @Exhaust, Frame = @Frame, Grill = @Grill, Hood = @Hood," +
               " Fender = @Fender, RightFender = @RightFender, Roof = @Roof, Engine = @Engine, Brakes = @Brakes, Transmission = @Transmission, Horn = @Horn, Suspension = @Suspension, Armor = @Armor," +
               " Xenon = [USER=8755]@xenon[/USER], FrontWheels = @FrontWheels, BackWheels = @BackWheels, PlateHolder = @PlateHolder, TrimDesign = @TrimDesign, Ornaments = @Ornaments, DialDesign = @DialDesign," +
               " SteeringWheel = @SteeringWheel, ShiftLever = @ShiftLever, Plaques = @Plaques, Hydraulics = @Hydraulics, Plate = @Plate, WindowTint = @WindowTint, DashboardColor = @DashboardColor," +
               " TrimColor = @TrimColor WHERE Id = @Id LIMIT 1", parameters);
       }
Dies Funktioniert aber leider nicht. Vielleicht hat ja jemand eine Idee wie dies vielleicht funktionieren könnte. Ich bin anscheinend nicht schlau genug dafür.
 
Code:
 WHERE Id = @Id LIMIT 1

Du setzt allerdings in deinem Dictionary niemals die ID des Fahrzeugs für die Parameter.
 
Poste bitte nochmal vollständigen Code. Was tut DatabaseHandler.ExecutePreparedStatement? Hast du mal mit einer simplen Query geschaut, ob die Daten überhaupt in der Datenbank ankommen? Überträgst du die richtige ID?
 
Code:
public static void UpdateMods(OwnedVehicle ownedVehicle)
        {
            API.shared.consoleOutput("Mod Stuff Database Triggert");
            Dictionary<string, string> parameters = new Dictionary<string, string>
            {
                { "@Id", ownedVehicle.Id.ToString() },
                { "@Spoiler", ownedVehicle.ActiveHandle.getMod(0).ToString() },
                { "@FrontBumper", ownedVehicle.ActiveHandle.getMod(1).ToString() },
                { "@RearBumper", ownedVehicle.ActiveHandle.getMod(2).ToString() },
                { "@SideSkirt", ownedVehicle.ActiveHandle.getMod(3).ToString() },
                { "@Exhaust", ownedVehicle.ActiveHandle.getMod(4).ToString() },
                { "@Frame", ownedVehicle.ActiveHandle.getMod(5).ToString() },
                { "@Grill", ownedVehicle.ActiveHandle.getMod(6).ToString() },
                { "@Hood", ownedVehicle.ActiveHandle.getMod(7).ToString() },
                { "@Fender", ownedVehicle.ActiveHandle.getMod(8).ToString() },
                { "@RightFender", ownedVehicle.ActiveHandle.getMod(9).ToString() },
                { "@Roof", ownedVehicle.ActiveHandle.getMod(10).ToString() },
                { "@Engine", ownedVehicle.ActiveHandle.getMod(11).ToString() },
                { "@Brakes", ownedVehicle.ActiveHandle.getMod(12).ToString() },
                { "@Transmission", ownedVehicle.ActiveHandle.getMod(13).ToString() },
                { "@Horn", ownedVehicle.ActiveHandle.getMod(14).ToString() },
                { "@Suspension", ownedVehicle.ActiveHandle.getMod(15).ToString() },
                { "@Armor", ownedVehicle.ActiveHandle.getMod(16).ToString() },
                { "@Turbo", ownedVehicle.ActiveHandle.getMod(18).ToString() },
                { "[USER=8755]@xenon[/USER]", ownedVehicle.ActiveHandle.getMod(22).ToString() },
                { "@FrontWheels", ownedVehicle.ActiveHandle.getMod(23).ToString() },
                { "@BackWheels", ownedVehicle.ActiveHandle.getMod(24).ToString() },
                { "@PlateHolder", ownedVehicle.ActiveHandle.getMod(25).ToString() },
                { "@TrimDesign", ownedVehicle.ActiveHandle.getMod(27).ToString() },
                { "@Ornaments", ownedVehicle.ActiveHandle.getMod(28).ToString() },
                { "@DialDesign", ownedVehicle.ActiveHandle.getMod(30).ToString() },
                { "@SteeringWheel", ownedVehicle.ActiveHandle.getMod(33).ToString() },
                { "@ShiftLever", ownedVehicle.ActiveHandle.getMod(34).ToString() },
                { "@Plaques", ownedVehicle.ActiveHandle.getMod(35).ToString() },
                { "@Hydraulics", ownedVehicle.ActiveHandle.getMod(38).ToString() },
                { "@Plate", ownedVehicle.ActiveHandle.getMod(62).ToString() },
                { "@WindowTint", ownedVehicle.ActiveHandle.getMod(69).ToString() },
                { "@DashboardColor", ownedVehicle.ActiveHandle.getMod(74).ToString() },
                { "@TrimColor", ownedVehicle.ActiveHandle.getMod(75).ToString() }
            };
                DataTable result = DatabaseHandler.ExecutePreparedStatement("UPDATE ownedvehicles SET Id = @Id, Spoiler = @Spoiler, FrontBumper = @FrontBumper, RearBumper = @RearBumper, SideSkirt = @SideSkirt, SideSkirt = @SideSkirt, Exhaust = @Exhaust, Frame = @Frame, Grill = @Grill, Hood = @Hood," +
                " Fender = @Fender, RightFender = @RightFender, Roof = @Roof, Engine = @Engine, Brakes = @Brakes, Transmission = @Transmission, Horn = @Horn, Suspension = @Suspension, Armor = @Armor," +
                " Xenon = [USER=8755]@xenon[/USER], FrontWheels = @FrontWheels, BackWheels = @BackWheels, PlateHolder = @PlateHolder, TrimDesign = @TrimDesign, Ornaments = @Ornaments, DialDesign = @DialDesign," +
                " SteeringWheel = @SteeringWheel, ShiftLever = @ShiftLever, Plaques = @Plaques, Hydraulics = @Hydraulics, Plate = @Plate, WindowTint = @WindowTint, DashboardColor = @DashboardColor," +
                " TrimColor = @TrimColor WHERE Id = @Id LIMIT 1", parameters);
        }

Und der Databasehandler.executePreparedStatement gibt ja nichts ab das ist ja das problem also es wird halt nichts gespeichert
 
Poste bitte nochmal vollständigen Code. Was tut DatabaseHandler.ExecutePreparedStatement? Hast du mal mit einer simplen Query geschaut, ob die Daten überhaupt in der Datenbank ankommen? Überträgst du die richtige ID?
Die ID hollt er sich ja beim einparken vom Fahrzeug also vom ownedVehicle und es kommt nichts in der datenbank an
 
Wenn du jeweils nur die Hälfte meiner Fragen beantwortest kann ich dir schlecht helfen.

Einfache Query mal abgesetzt mit der ID? Schick mir mal den SQL String, der an die Methode ExecutePreparedStatement übergeben wird.
 
Wenn du jeweils nur die Hälfte meiner Fragen beantwortest kann ich dir schlecht helfen.

Einfache Query mal abgesetzt mit der ID? Schick mir mal den SQL String, der an die Methode ExecutePreparedStatement übergeben wird.

Code:
UPDATE ownedvehicles SET Id = @Id, Spoiler = @Spoiler, FrontBumper = @FrontBumper, RearBumper = @RearBumper, SideSkirt = @SideSkirt, SideSkirt = @SideSkirt, Exhaust = @Exhaust, Frame = @Frame, Grill = @Grill, Hood = @Hood," +
               " Fender = @Fender, RightFender = @RightFender, Roof = @Roof, Engine = @Engine, Brakes = @Brakes, Transmission = @Transmission, Horn = @Horn, Suspension = @Suspension, Armor = @Armor," +
               " Xenon = [USER=8755]@xenon[/USER], FrontWheels = @FrontWheels, BackWheels = @BackWheels, PlateHolder = @PlateHolder, TrimDesign = @TrimDesign, Ornaments = @Ornaments, DialDesign = @DialDesign," +
               " SteeringWheel = @SteeringWheel, ShiftLever = @ShiftLever, Plaques = @Plaques, Hydraulics = @Hydraulics, Plate = @Plate, WindowTint = @WindowTint, DashboardColor = @DashboardColor," +
               " TrimColor = @TrimColor WHERE Id = @Id LIMIT 1
 
Und jetzt bitte den string, der im MySqlCommand steht und zur Datenbank gesendet wird (hier).
 
Und jetzt bitte den string, der im MySqlCommand steht und zur Datenbank gesendet wird (hier).
Ich bin grad nen wenig Verwirrt wo finde ich denn ?

Das hier ist doch der Command String oder nicht ?
Code:
UPDATE ownedvehicles SET Id = @Id, Spoiler = @Spoiler, FrontBumper = @FrontBumper," +
                " Spoiler = @Spoiler, FrontBumper = @FrontBumper, RearBumper = @RearBumper, SideSkirt = @SideSkirt, SideSkirt = @SideSkirt, Exhaust = @Exhaust, Frame = @Frame, Grill = @Grill, Hood = @Hood," +
                " Fender = @Fender, RightFender = @RightFender, Roof = @Roof, Engine = @Engine, Brakes = @Brakes, Transmission = @Transmission, Horn = @Horn, Suspension = @Suspension, Armor = @Armor," +
                " Xenon = [USER=8755]@xenon[/USER], FrontWheels = @FrontWheels, BackWheels = @BackWheels, PlateHolder = @PlateHolder, TrimDesign = @TrimDesign, Ornaments = @Ornaments, DialDesign = @DialDesign," +
                " SteeringWheel = @SteeringWheel, ShiftLever = @ShiftLever, Plaques = @Plaques, Hydraulics = @Hydraulics, Plate = @Plate, WindowTint = @WindowTint, DashboardColor = @DashboardColor," +
                " TrimColor = @TrimColor WHERE Id = @Id LIMIT 1
 
Nein, ich möchte den tatsächlichen MySQL-String, der an der Datenbank ausgeführt wird. Inkl. Werte der Parameter.
 
wo finde ich denn ?
Auch wenn ich dir dies nicht beantworten kann, frage ich mich grade warum du die "Id" in dem Command updatest. Diese dürfte sich ja eigentlich nie ändern, da es ja sonst in der Datenbank nicht klappt.

Dazu wäre die geforderte Debug Message ganz gut und vielleicht auch mal die Info ob in der Datenbank überhaupt Einträge existieren und wenn ja welche "Id"'s die haben.
 
frage ich mich grade warum du die "Id" in dem Command updatest
Stimmt, auch eine gute Frage. Auch wenn es wahrscheinlich irrelevant ist, da sie ja durch die WHERE-Clause auf die gleiche ID gesetzt werden würde - oder aber die Datenbank steigt da aus, falls es ein AUTO_INCREMENT Feld ist. Das weiß ich derzeit nicht aus dem Kopf.
 
Nein, ich möchte den tatsächlichen MySQL-String, der an der Datenbank ausgeführt wird. Inkl. Werte der Parameter.
Meinst du das ?
Code:
INSERT INTO `ownedvehicles` (`ID`, `Owner`, `OwnerCharId`, `Model`, `EngineHealth`, `Fuel`, `Faction`, `NumberPlate`, `PrimaryColor`, `SecondaryColor`, `Livery`, `InUse`, `Inventory`, `Chip`, `Spoiler`, `FrontBumper`, `RearBumper`, `SideSkirt`, `Exhaust`, `Frame`, `Grill`, `Hood`, `Fender`, `RightFender`, `Roof`, `Engine`, `Brakes`, `Transmission`, `Horn`, `Suspension`, `Armor`, `Turbo`, `Xenon`, `FrontWheels`, `BackWheels`, `PlateHolder`, `TrimDesign`, `Ornaments`, `DialDesign`, `SteeringWheel`, `ShiftLever`, `Plaques`, `Hydraulics`, `Plate`, `WindowTint`, `DashboardColor`, `TrimColor`) VALUES
(53, 'U1tim4te', 3, 'Dominator3', 527, 28, 0, 'RY536731', -1, -1, 0, 1, '[]', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
 
Das ist ein INSERT Statement, kein UPDATE Statement. Das kann nicht aus der Methode kommen, die du oben gepostet hast. Außerdem benötige ich zusätzlich die Rückmeldung vom SQL Server.
 
Ich bin zwar schon länger nicht mehr in der Materie drin aber du kannst doch nicht Spalte "ID" klein schreiben, wenn jene groß geschrieben ist, musst du sie auch im Update Befehl groß schreiben und dies in beiden Fällen.