2016-07-13 22 views
-2

Ich habe versucht, in der Datenbank zwischen zwei Terminen zu suchen, aber es bekommt Fehler:Wie Sie die Version von SQL Server im Einsatz beheben nicht Datentyp unterstützen ‚datetime2‘

The version of SQL Server in use does not support datatype 'datetime2'

Dies ist mein Code

if (idbox.Text != "") 
{ 
    conn.Open(); 
    SqlDataAdapter dataadabter = new SqlDataAdapter("select name, mil_no,Hodor_date,rotba,enseraf_date,user_hodor,user_enseraf,hodor_time,enseraf_time " + 
    "from Hodor_Data where CONVERT(DATETIME,Hodor_date,101)" + "between @p1 AND @p2" + " and mil_no='" + idbox.Text + "'", conn); 

    SqlParameter fromdate = new SqlParameter("@p1", SqlDbType.DateTime2); 
    fromdate.Value = dateTimePicker1.Value; 

    SqlParameter todate = new SqlParameter("@p2", SqlDbType.DateTime2); 
    todate.Value = dateTimePicker2.Value; 

    dataadabter.SelectCommand.Parameters.Add(fromdate); 
    dataadabter.SelectCommand.Parameters.Add(todate); 

    DataTable dt = new DataTable(); 
    dataadabter.Fill(dt); 

    dataGridView1.DataSource = dt; 
    conn.Close(); 

hodor_date ist nvarchar(50)

+2

'SqlDbType.DateTime2' sollte eindeutig zu etwas anderem dann geändert werden. Haben Sie nach Möglichkeiten geforscht? Auch warum ist 'hodor_date' ein' nvarchar (50) '? Warum ist 'idbox.Text' nicht parametrisiert? –

+2

Es hilft immer, wenn Sie tatsächlich ** die Wörter ** in der Fehlermeldung lesen. In diesem Fall wird das Problem sehr deutlich erklärt, und die Wörter bedeuten eindeutig, dass Sie zu einer Version von DateTime wechseln müssen, die in Ihrer Version von SQL Server unterstützt wird. Die Dokumentation für Ihre spezielle Version wird Ihnen sagen, welche Datentypen Ihnen zur Verfügung stehen. –

+0

ich verstehe nicht, was ich tun soll? – Amr

Antwort

1

Sie verwenden eine ältere Version von sQL verwendet SqlDbType.DateTime stattdessen als die sQL-Server-Version nicht DateTime2 unterstützt.

... 
SqlParameter fromdate = new SqlParameter("@p1", SqlDbType.DateTime); 
fromdate.Value = dateTimePicker1.Value; 
SqlParameter todate = new SqlParameter("@p2", SqlDbType.DateTime); 
... 

Es gibt andere Dinge in dem Code, den ich Ausgabetag mit (nicht parametrisiert Mitglied, nicht mit Blöcken, nvarchar für Datum mit, etc).

+0

Ich benutze sql-server2005 ... das gleiche erroe – Amr

+0

@Amr - stellen Sie sicher, dass Sie Ihren Code neu kompilieren, nachdem Sie die Änderung vornehmen und es erneut ausführen. 'SqlDbType.DateTime2' wird zu' SqlDbType.DateTime', wo immer Sie es in Ihrem Code haben. Auch alle Castings, die Sie direkt in Ihrer SQL-Anweisung ausführen, sollten auf datetime und nicht auf datetime2 verweisen. – Igor

+0

ok .. es gibt keinen Fehler, aber es gibt auch kein Ergebnis – Amr