string query = string.Format(@"if not exists(select id from user_detail where id_str = '" + args.Tweet.CreatedBy.IdStr + "') begin insert into user_detail(id_str,screen_name,user_name,createdate,hashtag,imageurl,message,unique_id,tweet_id)values('" + args.Tweet.CreatedBy.IdStr + "',N'" + args.Tweet.CreatedBy.ScreenName.Replace("'", "`") + "', N'" + args.Tweet.CreatedBy.Name.Replace("'", "`") + "','" + args.Tweet.CreatedAt + "',N'" + Hashtag + "',N'" + Convert.ToString() + "',N'" + args.Tweet.Text.Replace("'", "`") + "','" + Guid.NewGuid().ToString() + "','" + args.Tweet.IdStr + "') end else begin update user_detail set screen_name=N'" + args.Tweet.CreatedBy.ScreenName + "' where id_str = '" + args.Tweet.CreatedBy.IdStr + "' end");
Antwort
Niemals verketten Sie die Eingabe zum Erstellen von SQL. Es wird dich verletzen und dich verletzen und verletzen. Wenn Sie Parameter verwenden, werden alle Probleme der Escape-Funktion verschwinden, ebenso wie Probleme im Zusammenhang mit culture-info und das Risiko einer SQL-Injektion. Es bedeutet auch, dass Sie die Daten der Leute nicht korrumpieren müssen, indem Sie '
in Back-Ticks umwandeln (obwohl es tatsächlich einen Weg gibt, einfache Anführungszeichen zu umgehen).
parametrieren
Zum Beispiel:
const string query = @"
if not exists(select id from user_detail where id_str = @idstr)
begin
insert into user_detail(id_str,screen_name,user_name,createdate,hashtag,imageurl,message,unique_id,tweet_id)
values(@idstr, @screenName, /*...*/)
end
else
begin
update user_detail set screen_name= @screenName
-- ...
end";
Es gibt viele Möglichkeiten, die tatsächliche Ausführung zu tun. Zum Beispiel mit rohen ADO.NET:
using(var cmd = conn.CreateCommand()) {
cmd.CommandText = query;
cmd.Parameters.AddWithValue("idstr", idstr);
cmd.Parameters.AddWithValue("screenName", screenName);
// ...
cmd.ExecuteNonQuery();
}
oder mit "adrett":
conn.Execute(query, new { idstr, screenName, /* ... */ });
In allen Fällen ...
bezeichnet, wo ich zusätzliche Dinge ausgelassen habe für Sie zu füllen (das however- viele Spalten/Parameter/etc, die Ihre Daten beschreiben).
für das, was wir tun wollen –
@jeyajj einen Moment ... Bearbeitung ... –
- 1. string.Format Eingabezeichenfolge ist nicht korrekt für Zeichenfolge mit geschweiften Klammern bereits als Teil des Formats C#
- 2. Winkel wenn geschweiften Klammern
- 3. Importfunktion mit geschweiften Klammern
- 4. String initializer mit geschweiften Klammern
- 5. Format: KeyError wenn geschweiften Klammern in Strings
- 6. GSON - Umgang mit geschweiften Klammern
- 7. Copykonstruktor geschweiften Klammern Initialisierung
- 8. Wie kann ich geschweiften Klammern in Angular
- 9. Aufruf ctor mit geschweiften Klammern
- 10. Keine geschweiften Klammern, wenn sonst Anweisungen?
- 11. Array intilization geschweiften Klammern
- 12. Auswahl der Spalte dynamisch mit geschweiften Klammern
- 13. Curly Klammern in Javascript einfügen, wenn es ohne geschweifte Klammern ist?
- 14. Parenthesis vs geschweiften Klammern
- 15. Mit der „in“ Operator, Klammern gegen geschweiften Klammern
- 16. Zeile Code in geschweiften Klammern
- 17. Mehrere Worte zwischen geschweiften Klammern in PHP
- 18. Was bedeuten Klammern nach geschweiften Klammern?
- 19. Javascript (ES6) const mit geschweiften Klammern
- 20. rsync mit geschweiften Klammern Expansion andernfalls
- 21. "Verwendung" Anweisung vs. geschweiften Klammern
- 22. Initialisieren von Klasseninstanz mit geschweiften Klammern
- 23. Ersetzen Sie alle eckigen Klammern mit geschweiften Klammern
- 24. TCL String Manipulation mit geschweiften Klammern
- 25. Wie funktioniert ein Block mit geschweiften Klammern und Klammern?
- 26. Programm zum Ausgleich der geschweiften Klammern
- 27. Python Regex geschweiften Klammern mehrzeilige
- 28. VS-Code - Codeformatierung Raum vor geschweiften Klammern
- 29. Semikolon nach geschweiften Klammern in C++
- 30. SQL anstelle von Trigger einfügen - Daten einfügen, wenn nicht existiert
zuweisen die endgültige sql string zu lokalen 'string sql = ...', dann debuggen und überprüfen Sie die Zeichenfolge –
es ist wirklich eine gute Idee parameterize Abfragen in 'SqlCommand' mit der' .Parameters.AddWithValue ("@ ColumnName "," Value ");' Sonst könnten Sie anfällig für die SQL-Injektion sein – Vladimir