Aktualisieren, wenn der name vorhanden sonst insert - SQL-Server

Ich will update in meiner Tabelle, wenn meine angegebene Dateiname ist bereits in meiner Datenbank, was ich will, um eine neue Zeile einzufügen. Ich versuche diesen code, aber die EXISTS angezeigt Fehler-bitte geben Sie mir den richtigen Weg, denn iam frischer in SQL

public void SaveData(string filename, string jsonobject)
{
    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=;Integrated Security=True");
    SqlCommand cmd;
    SqlCommand cmda;

    if EXISTS("SELECT * FROM T_Pages WHERE pagename = '" + filename + "") {
        cmda = new SqlCommand("UPDATE T_Pages SET pagename='" + filename + "',pageinfo='" + jsonobject + "' WHERE pagename='" + filename + "'", con);
        cmda.ExecuteNonQuery();
    }
    else {
        cmd = new SqlCommand("insert into T_Pages (pagename,pageinfo) values('" + filename + "','" + jsonobject + "')", con);
        cmd.ExecuteNonQuery();
    }

    con.Close();
}
  • Was ist if EXISTS ? Sie sind in C# - code. Sie können nicht schreiben, SQL-syntax in C# - code
  • Hast du definieren/implementieren VORHANDEN Funktion? Sie müssen.
  • MERGE ist für diesen Zweck
  • Zu kompliziert.....:-) Ich Vertrauen ihm nicht
  • MERGE ist eine schlechte Wahl, hier, verwenden Sie, WENN VORHANDEN/INSERT/UPDATE in einem einzelnen batch.
  • Hallo, sehen Sie sich bitte die LINK ich denke, Sie werden es nützlich finden.
  • Hast du gesehen, die ersten beiden Kommentare? Der code wird nicht kompiliert, wenn EXISTS ist nicht implementiert, irgendwo, so dass ich werde zu erraten, zumindest müssen Sie dann das schließende einfache Anführungszeichen um filename im if - Anweisung.
  • SQL-Injection-Alarm Sie sollten nicht verketten Sie zusammen Ihre SQL-Anweisungen - verwenden Sie parametrisierten Abfragen statt zur Vermeidung von SQL-injection

Schreibe einen Kommentar