Frage

Hey alle Ich versuche, die folgende INSERT-Abfrage

zu tun
SqlDataSource userQuizDataSource = new SqlDataSource();
userQuizDataSource.ConnectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=quizApp;Integrated Security=True";
userQuizDataSource.InsertCommand = "INSERT INTO [UserQuiz] ([DateTimeComplete], [Score], [UserName]) VALUES (@DateTimeComplete, @Score, @UserName)";

userQuizDataSource.InsertParameters.Add("DateTimeComplete", DateTime.Now.ToString());
userQuizDataSource.InsertParameters.Add("Score", score.ToString());
userQuizDataSource.InsertParameters.Add("UserName", User.Identity.Name);

int rowsAffected = userQuizDataSource.Insert();

Buti halten die folgende Störung zu erhalten:

  

Die Umwandlung eines nvarchar-Datentyp   auf eine Art small Daten resultierten   in einem Out-of-Range-Wert.   Die Anweisung wird beendet.

Kann mir jemand helfen aus?

War es hilfreich?

Lösung

Wie sieht Ihre Aussage DateTime.Now.ToString() Rückkehr ??

Was Sprache und regionale Einstellungen ist Ihr SQL Server erwartet ??

Haben Sie eine Diskrepanz gibt ??? Vielleicht gibt .NET ein MM/dd/yyyy Format, während SQL Server dd/MM/yyyy (oder umgekehrt) erwartet.

Versuchen Sie diesen Code in Ihrem SQL Server:

DECLARE @test TABLE (smalldate SMALLDATETIME)
INSERT INTO @test VALUES ('02/21/2010 22:00:32') --
SELECT * FROM @test

Ersetzen Sie meinen String dort mit dem, was Ausgabe, die Sie bekam von .NET ist DateTime.Now.ToString() - funktionierts? Does SQL Server gibt Ihnen eine bessere Fehlermeldung?

Als nächstes versuchen, das ISO-8601-Format für Daten zu verwenden (JJJJMMTT) - Dies funktioniert für Alle Regions- und Spracheinstellungen in SQL Server - funktioniert das ??

DECLARE @test TABLE (smalldate SMALLDATETIME)
INSERT INTO @test VALUES ('20100221 22:00:32') --
SELECT * FROM @test

Andere Tipps

Ich hatte das gleiche Problem des Hinzufügen datetime.now in meine SQL Server Spalte 'Datum' Set-Datentyp Smalldatetime.

beheben es ganz einfach war (nach vielen Versuchen !!)

string currentdatetime=
DateTime.Now.Year + "." + DateTime.Now.Month + "." + DateTime.Now.Day +
               " " + DateTime.Now.Hour+(":")+DateTime.Now.Minute+(":")+DateTime.Now.Second

Dies wird das Datum in das Format zurück, dass der Server wird erwartet

Versuchen Sie, diese zu ändern:

userQuizDataSource.InsertParameters.Add("DateTimeComplete", DateTime.Now.ToString());

folgt aus:

userQuizDataSource.InsertParameters.Add("@startdate", SqlDbType.DateTime, DateTime.Now.ToString());

Versuchen Sie nicht das Umwandeln Ihrer Datum string:

userQuizDataSource.InsertParameters.Add("DateTimeComplete", DateTime.Now);

Edit: Versuchen Sie, diese dann:

userQuizDataSource.InsertParameters.Add("DateTimeComplete", TypeCode.DateTime, DateTime.Now.ToString());

Es gibt eine andere Möglichkeit, nur das eigentliche Objekt passieren, aber ich kann mich nicht erinnern .. sorry.

In Windows 8, wenn Sie dieses Problem konfrontiert sind auch nach Formats in unter Ändern des Standorts

  

Systemsteuerung -> Region

Sie haben noch diese Einstellungen für Ihre Benutzer zu übertragen. Im gleichen Fenster, gehen Sie auf die Registerkarte „Verwaltung“, auf Kopie-Einstellungen klicken.

Wählen Sie die entsprechenden Kontrollkästchen und klicken Sie auf OK.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top