2016-04-27 15 views
1

Ich habe ein Problem mit der Abfrage zwischen .I'm versuchen, Datensätze aus einer Tabelle zwischen zwei Terminen zu wählen, SO, habe ich die folgende Abfrage:Auswahlabfrage zwischen zwei Terminen in Windowsanmeldung C#

SqlDataAdapter sda1 = new SqlDataAdapter(
    "select distinct * from BLC where DATE_BLC between '" + 
    dateTimePicker1.Value.ToString() + "' and'" + 
    dateTimePicker2.Value.ToString() + "'", conx); 

wenn ich die folgenden Daten eingeben:

Von Datum 05/02/2016 15/03/2016

Bisher Es gibt die Datensätze zwischen (2016.06.02 bis 15/03/2016) Datum, aber die Datensätze, die mit Datum 05/02/2016 beginnen, werden nicht zurückgegeben. und wenn ich das Datum wähle (vom 05.02.2016 bis 05.02.2016) gibt es hier keine Aufzeichnungen. Kann mir jemand sagen, was ich hier falsch mache?

+0

Ihre DateTimePicker1 sendet Zeitstempel auch für SQL, versuchen Sie nur Datum passieren – techspider

+0

Dieser Code zu SQL-Injection-Angriffe anfällig ist. –

+0

@JoelCoehoorn Haben Sie eine Idee, wie Sie es sichern können? –

Antwort

2

Versuchen nur Date Wert statt DateTime Wert

SqlDataAdapter sda1 = new SqlDataAdapter("select distinct * from BLC where DATE_BLC between '" + dateTimePicker1.Value.Date.ToShortDateString() + "' and'" + dateTimePicker2.Value.Date.ToShortDateString() + "'", conx); 
+0

es funktioniert, vielen Dank –

+0

@ Y.Arsoy sollten Sie die Antwort als die richtige Lösung markieren, wenn es Ihr Problem gelöst hat. – tobypls

+0

@tobypls Ich bin neu hier, ich habe nicht gefunden, wo soll ich es gelöst markieren? –

3

Es ist eine bessere codding Praxis passieren Parameter zu verwenden, da sie alle Eingänge für alle Fragen sterilisieren werden und sind in der Regel sicherer Benutzer. So würde der Code

werden
SqlDataAdapter sda1 = new SqlDataAdapter("select distinct * from BLC where DATE_BLC between @Date1 and @Date2", conx); 
sda1.SelectCommand.Parameters.Add(new SqlParameter("@Date1", dateTimePicker1.Value)); 
sda1.SelectCommand.Parameters.Add(new SqlParameter("@Date2", dateTimePicker2.Value)); 
Verwandte Themen