2009-08-16 5 views
1

SQL Server 2005 데이터베이스에 datetime 형식 변수를 삽입하는 데 문제가 있습니다. 날짜 시간 형식SQL Server 2005에 DateTime 삽입

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 및 성숙도 내가 dateTimePicker.Value에서 얻을 날짜 시간 변수 DD.MM.YYYY입니다.

와 나는 항상 오류를 받고 있어요 : 문자열에서 날짜를 변환 할 때

변환에 실패했습니다.

도움 주셔서 감사합니다. 아래에 설명 된대로

답변

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 (startDateDateTime이어야하며 string이 아님).

매개 변수를 사용하는 경우 문자열 토큰 (')을 포함하지 않습니다. 그렇지 않으면 "@name 매개 변수에 보관 된 문자열"이 아닌 "문자열 '@name'"을 의미합니다. 다음을 제거하십시오.

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