2009-08-16 65 views
1

我有一个插入日期时间格式变量到Sql Server 2005数据库的问题。 日期时间格式为dd.mm.yyyy插入日期时间到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(); 

       } 

起始日期和到期日期时间是我的变量从dateTimePicker.Value得到。

我总是得到错误:从字符串转换日期时间时

转换失败。

谢谢你的帮助。

回答

2

你不应该把你的参数报价..这里是正确的查询..

“@StartDate”人们的价值观条款是错误的,它应该只是@StartDate ...解释如下。 ..

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

的问题是,你是在字符串的思维......

DateTime Format is dd.MM.yyyy

不,它不是; DateTime(当作为参数传递时)的格式实际上只是一个二进制数; -p(startDate应该是DateTime - 而不是string)。

当您使用的参数,你不包括字符串标记(') - 否则,你的意思是“字符串'@name'”,而不是“字符串参数@name举行”;尝试删除它们:

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