J'essaye d'INSÉRER dans une table de base de données SQL, mais cela ne fonctionne pas. J'ai donc utilisé le profileur de serveur SQL pour voir comment il construisait la requête; ce qu'il montre est le suivant:SQL mettant deux guillemets simples autour des champs datetime et ne parvient pas à insérer l'enregistrement
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
Comme vous pouvez le voir, il met un guillemet deux paires de guillemets simples autour des champs DateHeure, de sorte qu'il produit une erreur de syntaxe dans SQL. Je me demande s'il y a quelque chose que je dois configurer quelque part?
Toute aide serait appréciée.
Voici les détails de l'environnement:
- Visual Studio 2008
- .NET 3.5
- MS SQL Server 2005
Voici le code .NET J'utilise .. ..
//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" });
Pourriez-vous également publier les codes qui génèrent cette requête SQL? Le problème est très apparent (guillemets et deux-points entre secondes et millisecs), donc la racine de votre problème doit être dans le morceau de code qui a généré cette requête. –
poster votre code .net depuis la date à partir de laquelle les informations sont correctes? – Eppz
Pouvez-vous poster le code (ou un exemple qui reproduit le problème) qui construit la requête en premier lieu, mieux de travailler à l'avant qu'à l'arrière. – Lazarus