MySQL Query - Benötige Hilfe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MySQL Query - Benötige Hilfe

    Hey, ich würde gerne einen MySQL Query erstellen, wo in einer Tabelle etwas geupdated wird und in einer anderen Tabelle etwas erstellt wird.
    Das funktioniert soweit auch.

    In der "anderen" Tabelle würde ich aber gerne eine Funktion einbauen, um doppelte Namen zu verhindern. Das heißt wenn `name1` bereits irgendwo in der Datenbank `skins` existiert, soll die Funktion darunter namens "catch (Exception ex)" aufgerufen werden, wodurch das Event "characterNameDuplicated" ausgeführt wird.

    Hier mal meine aktuelle Funktion:

    C-Quellcode

    1. public static int CreatePlayerSkin(Client player, AccountModel account, SkinModel skin)
    2. {
    3. NAPI.Util.ConsoleOutput("Debug 1");
    4. int playerId = 0;
    5. using (MySqlConnection connection = new MySqlConnection(connectionString))
    6. {
    7. NAPI.Util.ConsoleOutput("Debug 2");
    8. try
    9. {
    10. NAPI.Util.ConsoleOutput("Debug 3");
    11. connection.Open();
    12. MySqlCommand command = connection.CreateCommand();
    13. command.CommandText = "UPDATE accounts SET sex = @sex, name = @name WHERE socialName = @socialName LIMIT 1";
    14. command.Parameters.AddWithValue("@sex", account.sex);
    15. command.Parameters.AddWithValue("@name", account.realName);
    16. command.Parameters.AddWithValue("@socialName", account.socialName);
    17. command.ExecuteNonQuery();
    18. player.SetData(EntityData.PLAYER_SEX, account.sex);
    19. NAPI.Util.ConsoleOutput("Debug 4");
    20. playerId = (int)command.LastInsertedId;
    21. command.CommandText = "INSERT INTO `skins` (`name1`, `socialName`, `firstHeadShape`, `secondHeadShape`, `firstSkinTone`, `secondSkinTone`, `headMix`, `skinMix`, ";
    22. command.CommandText += "`hairModel`, `firstHairColor`, `secondHairColor`, `beardModel`, `beardColor`, `chestModel`, `chestColor`, `blemishesModel`, ";
    23. command.CommandText += "`ageingModel`, `complexionModel`, `sundamageModel`, `frecklesModel`, `noseWidth`, `noseHeight`, `noseLength`, `noseBridge`, `noseTip`, `noseShift`, ";
    24. command.CommandText += "`browHeight`, `browWidth`, `cheekboneHeight`, `cheekboneWidth`, `cheeksWidth`, `eyes`, `lips`, `jawWidth`, `jawHeight`, `chinLength`, ";
    25. command.CommandText += "`chinPosition`, `chinWidth`, `chinShape`, `neckWidth`, `eyesColor`, `eyebrowsModel`, `eyebrowsColor`, `makeupModel`, `blushModel`, `blushColor`, ";
    26. command.CommandText += "`lipstickModel`, `lipstickColor`) VALUES (@name1, @socName, @firstHeadShape, @secondHeadShape, @firstSkinTone, @secondSkinTone, @headMix, @skinMix, ";
    27. command.CommandText += "@hairModel, @firstHairColor, @secondHairColor, @beardModel, @beardColor, @chestModel, @chestColor, @blemishesModel, @ageingModel, ";
    28. command.CommandText += "@complexionModel, @sundamageModel, @frecklesModel, @noseWidth, @noseHeight, @noseLength, @noseBridge, @noseTip, @noseShift, @browHeight, ";
    29. command.CommandText += "@browWidth, @cheekboneHeight, @cheekboneWidth, @cheeksWidth, @eyes, @lips, @jawWidth, @jawHeight, @chinLength, @chinPosition, @chinWidth, ";
    30. command.CommandText += "@chinShape, @neckWidth, @eyesColor, @eyebrowsModel, @eyebrowsColor, @makeupModel, @blushModel, @blushColor, @lipstickModel, @lipstickColor)";
    31. command.Parameters.AddWithValue("@name1", account.realName);
    32. command.Parameters.AddWithValue("@socName", player.SocialClubName);
    33. command.Parameters.AddWithValue("@firstHeadShape", skin.firstHeadShape);
    34. command.Parameters.AddWithValue("@secondHeadShape", skin.secondHeadShape);
    35. command.Parameters.AddWithValue("@firstSkinTone", skin.firstSkinTone);
    36. command.Parameters.AddWithValue("@secondSkinTone", skin.secondSkinTone);
    37. command.Parameters.AddWithValue("@headMix", skin.headMix);
    38. command.Parameters.AddWithValue("@skinMix", skin.skinMix);
    39. command.Parameters.AddWithValue("@hairModel", skin.hairModel);
    40. command.Parameters.AddWithValue("@firstHairColor", skin.firstHairColor);
    41. command.Parameters.AddWithValue("@secondHairColor", skin.secondHairColor);
    42. command.Parameters.AddWithValue("@beardModel", skin.beardModel);
    43. command.Parameters.AddWithValue("@beardColor", skin.beardColor);
    44. command.Parameters.AddWithValue("@chestModel", skin.chestModel);
    45. command.Parameters.AddWithValue("@chestColor", skin.chestColor);
    46. command.Parameters.AddWithValue("@blemishesModel", skin.blemishesModel);
    47. command.Parameters.AddWithValue("@ageingModel", skin.ageingModel);
    48. command.Parameters.AddWithValue("@complexionModel", skin.complexionModel);
    49. command.Parameters.AddWithValue("@sundamageModel", skin.sundamageModel);
    50. command.Parameters.AddWithValue("@frecklesModel", skin.frecklesModel);
    51. command.Parameters.AddWithValue("@noseWidth", skin.noseWidth);
    52. command.Parameters.AddWithValue("@noseHeight", skin.noseHeight);
    53. command.Parameters.AddWithValue("@noseLength", skin.noseLength);
    54. command.Parameters.AddWithValue("@noseBridge", skin.noseBridge);
    55. command.Parameters.AddWithValue("@noseTip", skin.noseTip);
    56. command.Parameters.AddWithValue("@noseShift", skin.noseShift);
    57. command.Parameters.AddWithValue("@browHeight", skin.browHeight);
    58. command.Parameters.AddWithValue("@browWidth", skin.browWidth);
    59. command.Parameters.AddWithValue("@cheekboneHeight", skin.cheekboneHeight);
    60. command.Parameters.AddWithValue("@cheekboneWidth", skin.cheekboneWidth);
    61. command.Parameters.AddWithValue("@cheeksWidth", skin.cheeksWidth);
    62. command.Parameters.AddWithValue("@eyes", skin.eyes);
    63. command.Parameters.AddWithValue("@lips", skin.lips);
    64. command.Parameters.AddWithValue("@jawWidth", skin.jawWidth);
    65. command.Parameters.AddWithValue("@jawHeight", skin.jawHeight);
    66. command.Parameters.AddWithValue("@chinLength", skin.chinLength);
    67. command.Parameters.AddWithValue("@chinPosition", skin.chinPosition);
    68. command.Parameters.AddWithValue("@chinWidth", skin.chinWidth);
    69. command.Parameters.AddWithValue("@chinShape", skin.chinShape);
    70. command.Parameters.AddWithValue("@neckWidth", skin.neckWidth);
    71. command.Parameters.AddWithValue("@eyesColor", skin.eyesColor);
    72. command.Parameters.AddWithValue("@eyebrowsModel", skin.eyebrowsModel);
    73. command.Parameters.AddWithValue("@eyebrowsColor", skin.eyebrowsColor);
    74. command.Parameters.AddWithValue("@makeupModel", skin.makeupModel);
    75. command.Parameters.AddWithValue("@blushModel", skin.blushModel);
    76. command.Parameters.AddWithValue("@blushColor", skin.blushColor);
    77. command.Parameters.AddWithValue("@lipstickModel", skin.lipstickModel);
    78. command.Parameters.AddWithValue("@lipstickColor", skin.lipstickColor);
    79. command.ExecuteNonQuery();
    80. NAPI.Util.ConsoleOutput("Character created");
    81. player.TriggerEvent("cancelCharacterCreation2");
    82. player.SetData(EntityData.PLAYER_TUTORIAL, 2);
    83. Globals.OnPlayerSpawn(player);
    84. }
    85. catch (Exception ex)
    86. {
    87. NAPI.Util.ConsoleOutput("[EXCEPTION CreateCharacter] " + ex.Message);
    88. NAPI.Util.ConsoleOutput("[EXCEPTION CreateCharacter] " + ex.StackTrace);
    89. player.TriggerEvent("characterNameDuplicated");
    90. }
    91. }
    92. return playerId;
    93. }
    Alles anzeigen
    Die Funktion ansich funktioniert einwandfrei, das Problem dabei ist halt wie gesagt das mit den doppelten Namen.
  • Eine Möglichkeit wäre einfach vorher mit Hilfe einer anderen Funktion/Query die Datenbank durchzugehen und zu checken ob der Name bereits existiert.

    Beispiel:
    1. User gibt Name ein
    2. Funktion "checkIfCharacterNameExists" (Beispielname) wird aufgerufen -> Query geht durch Datenbank und checkt Namen
    3. Wenn Name existiert -> Fehler an User, wenn nicht Funktion zum erstellen des Charakters (CreatePlayerSkin) wird aufgerufen