Ich versuche, in eine SQL-Datenbank einfügen, aber es funktioniert nicht. Also habe ich den SQL-Server-Profiler verwendet, um zu sehen, wie er die Abfrage erstellt hat. was es zeigt, ist die folgende:SQL Putting zwei einfache Anführungszeichen um Datetime Felder und schlägt fehl, Datensatz
declare @p1 int
set @p1=0
declare @p2 int
set @p2=0
declare @p3 int
set @p3=1
exec InsertProcedureName @[email protected] output, @[email protected] output,
@[email protected] output, @ProjectID=N'0', @IPAddress=N'66.229.112.168',
@FirstName=N'Mike', @LastName=N'P', @Email=N'[email protected]',
@PhoneNumber=N'(254)637-1256', @MobilePhone=NULL, @CurrentAddress=N'',
@FromZip=N'10005', @MoveInAddress=N'', @ToZip=N'33067',
@MovingSize=N'1', @MovingDate=''2009-04-30 00:00:00:000'',
/* Problem here ^^^ */
@IsMovingVehicle=0, @IsPackingRequired=0, @IncludeInSaveologyPlanner=1
select @p1, @p2, @p3
Wie Sie sehen können, bringt es ein doppeltes Anführungszeichen zwei Paare einfacher Anführungszeichen um die Datetime-Felder, so dass es einen Syntaxfehler in SQL erzeugt. Ich frage mich, ob es irgendetwas gibt, das ich irgendwo konfigurieren muss?
Jede Hilfe wäre willkommen. Hier
ist die Umwelt-Details:
- Visual Studio 2008
- .NET 3.5
- MS SQL Server 2005
Hier ist die .NET-Code Ich bin mit .. ..
//call procedure for results
strStoredProcedureName = "usp_SMMoverSearchResult_SELECT";
Database database = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = database.GetStoredProcCommand(strStoredProcedureName);
dbCommand.CommandTimeout = DataHelper.CONNECTION_TIMEOUT;
database.AddInParameter(dbCommand, "@MovingDetailID", DbType.String, objPropConsumer.ConsumerMovingDetailID);
database.AddInParameter(dbCommand, "@FromZip", DbType.String, objPropConsumer.FromZipCode);
database.AddInParameter(dbCommand, "@ToZip", DbType.String, objPropConsumer.ToZipCode);
database.AddInParameter(dbCommand, "@MovingDate", DbType.DateTime, objPropConsumer.MoveDate);
database.AddInParameter(dbCommand, "@PLServiceID", DbType.Int32, objPropConsumer.ServiceID);
database.AddInParameter(dbCommand, "@FromAreaCode", DbType.String, pFromAreaCode);
database.AddInParameter(dbCommand, "@FromState", DbType.String, pFromState);
database.AddInParameter(dbCommand, "@ToAreaCode", DbType.String, pToAreaCode);
database.AddInParameter(dbCommand, "@ToState", DbType.String, pToState);
DataSet dstSearchResult = new DataSet("MoverSearchResult");
database.LoadDataSet(dbCommand, dstSearchResult, new string[] { "MoverSearchResult" });
Können Sie auch die Codes posten, die diese SQL-Abfrage generieren? Das Problem ist sehr offensichtlich (doppelte Anführungszeichen und Doppelpunkt zwischen Sekunden und Millisekunden), so dass die Wurzel Ihres Problems in dem Codeabschnitt sein muss, der diese Abfrage generiert hat. –
posten Sie Ihren .net-Code, da die Datumsinformationen von dort korrekt sind? – Eppz
Können Sie den Code (oder ein Beispiel, das das Problem reproduziert), die die Abfrage in erster Linie erstellt, Sie am besten von vorne in der Ausgabe als das Zurück zu veröffentlichen. – Lazarus