Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - String in SQLCommand als DateTime?


Vegeto - Di 08.03.16 12:21
Titel: String in SQLCommand als DateTime?
Hallo,

ich habe diesen SQL Query:

SQL-Anweisung
1:
2:
3:
SELECT [object]
FROM Table_Day
WHERE [value] between '01.03.2016 00:00:00' and '03.03.2016 00:00:00'


Wenn ich das ganze unter SQL Server Management Studio benutze, zeigt er mir das Ergebnis an welche ich möchte.
Jetzt habe ich das ganze in Visual Studio eingebaut mit Parametern:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
using (SqlCommand sqlCMD = new SqlCommand())
                {
                    sqlCMD.Connection = SQLConnection;
                    sqlCMD.CommandType = CommandType.Text;
                    SqlParameter von = new SqlParameter("@vonDatum", SqlDbType.DateTime);
                    von.Value = VonDatum;
                    SqlParameter bis = new SqlParameter("@bisDatum", SqlDbType.DateTime);
                    bis.Value = BisDatum;
                    sqlCMD.Parameters.Add(von);
                    sqlCMD.Parameters.Add(bis);

                    //sqlCMD.Parameters.AddWithValue("@vonDatum", VonDatum);
                    //sqlCMD.Parameters.AddWithValue("@bisDatum", BisDatum);

                    sqlCMD.CommandText = @"SELECT [object]
FROM Table_Day
WHERE [value] between 'vonDatum' and bisDatum'"
;
                    using (SqlDataReader sqlReder = sqlCMD.ExecuteReader())
                    {
                        while (sqlReder.Read())
                        {
                            strObjects.Add(sqlReder[0].ToString());
                        }
                    }
                }


Also wie Ihr sehen könnt habe ich es einmal mit SqlParameter versucht und mit Parameters.AddValue(). Beide geben mir die selbe Fehlermeldung aus:
Zitat:
Fehler beim Konvertieren einer Zeichenfolge in ein Datum und/oder eine Uhrzeit.


Doch ich verstehe das ganze nicht, denn ich gebe als Typ DateTime (die beiden Variablen VonDatum und BisDatum sind variablen vom Typ DateTime!) weiter. Ich habe es auch versucht als string (also VonDatum und BisDatum als Typ String doch auch dort kommt die selbe Fehlermeldung.

Ich hoffe jemand stand vor dem selben Problem und kann mir Helfen.

Liebe Größe
Vegeto


Th69 - Di 08.03.16 12:54

Hallo,

du verwendest die Parameter falsch:

C#-Quelltext
1:
sqlCMD.CommandText = @"SELECT [object] FROM Table_Day WHERE [value] BETWEEN @vonDatum AND @bisDatum";                    

Der Sinn der Parameter ist ja extra, daß man sich nicht mehr um den Datentyp kümmern muß (d.h. ob mit oder ohne Anführungsstriche).


Vegeto - Di 08.03.16 13:48

DANKE !!!

VIEL DANK.

Was für ein Dummer Fehler.

LG