Ich habe ein C# -Programm, das Daten verarbeiten und in SQL Server speichern muss. Das Problem, das ich habe, ist, dass einige der Daten, die legitim gespeichert werden, ein einzelnes Zitat enthalten. Beim Speichern der Daten muss ich die Elemente suchen, die einfache Anführungszeichen enthalten, und aktiv das einfache Anführungszeichen durch zwei einfache Anführungszeichen ersetzen, so dass ich keine abgeschnittene Zeichenfolge erhalte.Was ist die beste Möglichkeit, Zeichenfolge Daten zu SQL Server zu speichern, die einzelnes Zitat enthält
Derzeit egal wo ich Daten bin hinzufügen, die einen Apostroph enthalten könnte ich es durch die folgende Routine bin vorbei, die ich in einem statischen Modul namens FSQ (Fix Einzel Quote), das die Routine ist:
/// <summary>
/// Fix Single Quote - Used to remove Double quotes from strings that would confuse Access database by replacing with Single Quotes.
/// </summary>
/// <param name="s">String text to be fixed by removing double quotes.</param>
/// <returns>The original string with any double-quotes removed and replaced with single quotes. If an error occurs will return an empty string.</returns>
public static string FSQ(string s)
{
string tmp ="";
try
{
if (s == null)
return "";
s = s.Trim();
if (s == "")
return s;
if(s.Contains("'"))
{
if(!s.Contains("''"))//Already been fixed previously so skip here
tmp = s.Replace("'", "''");
s = tmp;
}
return s;
}
catch (Exception ex)
{
PEH("FDQ", "Common Module", ex.Message);
return "";
}
} //public static String FDQ(String s)
Dies funktioniert und meine Strings werden OK in SQL gespeichert, aber da es viele Aufrufe an diese Routine gibt, ist die Leistung saugt, wie das Programm durchläuft Tausende von Zeilen von Daten während der Verarbeitung.
Gibt es eine effizientere Routine, die diese Funktion nicht aufrufen würde? Meistens baue ich nur Updates oder füge Abfragen ein, die diese Elemente enthalten.
Jede Hilfe wird geschätzt.
.Argh. 'SqlCommand' +' SqlParamater' wird dies zu einem Nicht-Problem machen, indem es automatisch entkommt, weshalb Sie sie immer verwenden sollten. –
Und beachte auch, wie es passiert, wenn ich es übergebe, überspringe das Ersetzen und lasse trotzdem ein unübertroffenes Anführungszeichen durch. –
@InnovaITveSolutions Nein, dies sollte nicht als Duplikat verwendet werden, weil OP es von C# aus tut. In diesem Fall ist es eine Einladung zur SQL-Injection, einfache Anführungszeichen in einer Zeichenfolge zu entfernen. – dasblinkenlight