Nummernschild speichern in MySQL-Varchar

  • Ich brauche Hilfe, wie ich dieses Codo ändern kann, um es als Varchar speichern zu können im MYSQL




    [Command("plate")]

    public void plate(Client client, string plate)

    {

    Player player = client.getData("player");

    if (!client.isInVehicle) { return; }

    OwnedVehicle ownedVehicle = null;

    ownedVehicle = client.vehicle.getData("vehicle");

    API.setVehicleNumberPlate(client.vehicle, plate);

    Dictionary<string, string> parameters = new Dictionary<string, string>

    {

    { "@Id", ownedVehicle.Id.ToString() },

    { "@plate", plate.ToString() }

    };

    DataTable result = DatabaseHandler.ExecutePreparedStatement("UPDATE ownedvehicles SET NumberPlate =" + plate + " WHERE Id = Id LIMIT 1", parameters);

    API.sendNotificationToPlayer(client, "~w~Erfolg, plate gespeichert!");

    }

  • VarChar in der DB sagt aus das Zeichen, Zahlen in dem Feld gespeichert werden können.

    Mit .ToString() wird es bereits in einen String umgewandelt welchen du im VarChar2 Feld in der DB speicherst.

    Deine Frage ergibt so keinen Sinn.

  • Wie kommst du darauf das du nur eine Nummer speichern kannst.

    Wenn du eingibst LUSTIG1 dann wird das auch genauso in der DB gespeichert "LUSTIG1".


    Denke der Fehler liegt nicht im Code sondern du schickst schon nur eine Number im Command Fenster.

    Ruf das Command mal auf mit /plate MEINAUTO (max. 8 Zeichen, sollten idealerweise nur A-Z und 0-9 sein.)

  • Ich habe den Befehl /plate MEINAUTO geschrieben , erhalte aber die Fehlermeldung:


    19:25:57.691 | Error | ServerAPI | DATABASE: [ERROR] MySql.Data.MySqlClient.MySqlException (0x80004005): Unknown column 'MEINAUTO' in 'field list'

    at MySql.Data.MySqlClient.MySqlStream.ReadPacket()

    at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)

    at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)

    at MySql.Data.MySqlClient.MySqlDataReader.NextResult()

    at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)

    at SimpleRoleplay.Server.DatabaseHandler.ExecutePreparedStatement(String sql, Dictionary`2 parameters)

  • Alles klar, der Fehler liegt denke ich hier.


    Strings müssen im SQL natürlich mit ' begrenzt sein, Zahlen nicht.


    DataTable result = DatabaseHandler.ExecutePreparedStatement("UPDATE ownedvehicles SET NumberPlate =" + plate + " WHERE Id = Id LIMIT 1", parameters);

    API.sendNotificationToPlayer(client, "~w~Erfolg, plate gespeichert!");


    Ändere mal SET NumberPlate = '"+ plate + "' WHERE .... also vor und nach dem " einfach ein einfaches '

  • ich habe es geändert : UPDATE ownedvehicles SET NumberPlate = @plate WHERE Id = @Id LIMIT 1", parameters

    und es geht

    aber wen ich da auto in garage stele dan ist Standard