2009-08-16 6 views
1

J'ai un problème lors de l'insertion d'une variable de format datetime dans la base de données Sql Server 2005. Format DateTime est dd.MM.yyyyInsertion de DateTime dans Sql Server 2005

conn.Open(); 

       string conString = "SET DATEFORMAT DMY INSERT INTO AmortPlanT (InvestmentID,StartDate,Maturity,IRate,CoupPerYear,parValue) Values (@IIndex,'@StartDate','@Maturity',@IRate,@CouponPerYear,@parValue)"; 

       using (SqlCommand myCommand = new SqlCommand(conString, conn)) 
       { 
        myCommand.CommandType = CommandType.Text; 
        myCommand.Parameters.Add("@IIndex", SqlDbType.Int).Value = investmentIndex; 
        myCommand.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = startDate; 
        myCommand.Parameters.Add("@Maturity", SqlDbType.DateTime).Value = maturity; 
        myCommand.Parameters.Add("@IRate", SqlDbType.Float).Value = iRate; 
        myCommand.Parameters.Add("@CouponPerYear", SqlDbType.Int).Value = coupPerYear; 
        myCommand.Parameters.Add("@parValue", SqlDbType.Float).Value = parValue; 

        myCommand.ExecuteNonQuery(); 

       } 

StartDate et maturité sont des variables DateTime je reçois de dateTimePicker.Value.

Et je suis toujours obtenir l'erreur:

La conversion a échoué lors de la conversion datetime de chaîne de caractères.

Nous vous remercions de votre aide.

Répondre

2

Vous n'êtes pas censé mettre vos paramètres guillemets .. voici la requête correcte ..

« @StartDate » valeurs clause est erronée, il doit être juste @StartDate ... comme expliqué ci-dessous. ..

conn.Open(); 
    string conString = "SET DATEFORMAT DMY INSERT INTO AmortPlanT 
(InvestmentID,StartDate,Maturity,IRate,CoupPerYear,parValue) Values 
(@IIndex,@StartDate,@Maturity,@IRate,@CouponPerYear,@parValue)";     
using (SqlCommand myCommand = new SqlCommand(conString, conn)) 
    {      
    myCommand.CommandType = CommandType.Text;      
    myCommand.Parameters.Add("@IIndex", SqlDbType.Int).Value = investmentIndex;      
    myCommand.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = startDate;      
    myCommand.Parameters.Add("@Maturity", SqlDbType.DateTime).Value = maturity;      
    myCommand.Parameters.Add("@IRate", SqlDbType.Float).Value = iRate;     myCommand.Parameters.Add("@CouponPerYear", SqlDbType.Int).Value = coupPerYear;      
myCommand.Parameters.Add("@parValue", SqlDbType.Float).Value = parValue;     myCommand.ExecuteNonQuery();     
} 
1

Le problème est que vous pensez en termes de cordes ...

DateTime Format is dd.MM.yyyy

non, ce n'est pas; le format d'un DateTime (lorsqu'il est passé en paramètre) est vraiment juste un nombre binaire ;-p (startDate devrait être un DateTime - pas un string).

Lorsque vous utilisez des paramètres, vous ne pas inclure les jetons de chaîne (') - sinon vous dire « la chaîne '@name' », plutôt que « la chaîne tenu dans le paramètre @name »; essayez de les supprimer:

string conString = @" 
SET DATEFORMAT DMY INSERT INTO AmortPlanT (InvestmentID,StartDate,Maturity,IRate,CoupPerYear,parValue) 
VALUES (@IIndex,@StartDate,@Maturity,@IRate,@CouponPerYear,@parValue)"; 
Questions connexes