Datenbank-Präfix

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Leseratte.

    Datenbank-Präfix

    Hallo zusammen,

    ich möchte in meiner MySQL-Datenbank den Tabellen ein Präfix verpassen.
    Im Moment greife ich folgendermaßen auf die Datenbank zu:

    C#-Quellcode

    1. connection = new MySqlConnection(connStr);
    2. connection.Open();
    3. string txt = "UPDATE benutzer SET last_login = @llogin WHERE B_ID = @bid";
    4. MySqlCommand cmd= new MySqlCommand();
    5. cmd.CommandText = txt;
    6. cmd.Parameters.AddWithValue("@llogin", DateTime.Now);
    7. cmd.Parameters.AddWithValue("@bid", currentUser.id);
    8. cmd.Connection = connection;
    9. cmd.ExecuteNonQuery();


    Will ich da jetzt auch noch ein Tabellenpräfix einbauen, würde das so aussehen:

    C#-Quellcode

    1. string txt = "UPDATE @prefixbenutzer SET last_login = @llogin WHERE B_ID = @bid";


    Aber wie gebe ich nun an, wo die Variable "@prefix" endet und der feste String "benutzer" beginnt? So sucht C# natülich nach einer Variable @prefixbenutzer ...
    Manuell einbinden ("UPDATE " + prefix + "benutzer SET ...") will ich das auch nicht, dann muss ich "prefix" nämlich selber escapen.

    Ich meine, es hätte da mal irgend eine Schreibweise wie "@prefix@@benutzer" gegeben - aber diese gibts nicht und wirft mir nur Fehler.
    Gibts sowas oder sollte ich einfach den String "Benutzer" an die Variable prefix dranhängen?

    Leseratte
    Ich bin in C# noch nicht so fit. Aber so könntest du das in VB.net machen. Den Befehl müsste es soähnlich in C# auch geben.

    VB.NET-Quellcode

    1. Dim prefix as string = "WhatEver"
    2. string txt = String.Format("UPDATE {0}benutzer SET last_login = @llogin WHERE B_ID = @bid", prefix)


    hab gerade mal auf msdn geschaut: Hier steht das es genau so funktioniert.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ich bin nicht 100% sicher aber soweit ich weiß funktioniert das mit dem @Parameter nicht.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ich weiß. Das Programm soll aber beim ersten Start den Nutzer selber nach Datenbankserver, Datenbank und Datenbank-Präfix fragen. Also muss ich das Präfix aus einer Variable in den Code packen.

    habe es jetzt einfach so gelöst, dass ich direkt bei der Eingabe "MySqlHelper.escapeString(txtDBPrefix.Text));" ausführe und abspeicher, dann kann ich ganz normal mit C#-String-Methoden das Präfix da reinpacken.