Ich habe meine SQL-Abfrage, die Felder mit "wo" aus einer Variablen anzeigt. Ich habe meine Variable aus einer Funktion übergebenverhindern Escape-Zeichenfolge C#
String empCode welcher Wert
Hier ist mein Code "\\ (!":
public List<int> GetSuccessAndFailedCountForTodayForAgent(string empCode)
{
var result = new List<int>();
string query = "SELECT (SELECT COUNT(*) FROM BusinessTransactions WHERE STATUS='Failed' AND ENTEREDDATE='" + DateTime.Now.Date.ToShortDateString() + "' AND AgentEmployeeCode='" + empCode + "') AS FAILED_COUNT, (SELECT COUNT(*) FROM BusinessTransactions WHERE STATUS='Completed' AND ENTEREDDATE='" + DateTime.Now.Date.ToShortDateString() + "' AND AgentEmployeeCode='" + empCode + "') AS SUCCESS_COUNT";
using (SqlConnection conn = new SqlConnection(asynchPaymentDBConnectionString))
{
conn.Open();
using (SqlCommand s = new SqlCommand(query, conn))
{
using (SqlDataReader reader = s.ExecuteReader())
{
try
{
if (reader.HasRows)
{
while (reader.Read())
{
result.Add(reader.GetInt32(0));
result.Add(reader.GetInt32(1));
}
}
}
catch (Exception ex)
{
//do something
}
}
}
}
return result;
}
In meinem C# wird das Ergebnis 0 - 0 was, wenn ich versuche, SQL Server direkt es ein Ergebnis von 2 zu zeigen - 0
Die Zeichenfolge ! \\ ( wird als behandelt! \ (
Wie kann ich meinen String verwenden! \\ ( meiner where-Klausel?
EDIT:
Ich versuchte Parametern hinzufügen:
s.Parameters.Add("@EmployeeCode", SqlDbType.NVarChar, 16);
s.Parameters["@EmployeeCode"].Value = empCode;
Immer noch nicht
funktioniert
Versuchen Sie, Ihre Abfrage zu parametrisieren. –
Ihr Code ist anfällig für [SQL-Injektion] (http://www.w3schools.com/sql/sql_injection.asp). Wie @FelixPamitan vorgeschlagen, sollten Sie [Parameter] (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters%28v=vs.110%29.aspx) zum Erstellen verwenden Ihre Abfrage, anstatt nur Strings zu verketten. –
Verknüpft als Duplikat http://StackOverflow.com/Questions/5468425/How-Do-Parameterized-queries-Help-AGainst-SQL-Injection Frage erläutert, was SQL-Injektion ist und zeigt, wie es zu beheben (was auch Ihr Problem lösen wird Sie versuchen, herumzuhacken) –