2013-05-18 6 views
-1

나는이 오류 time이라고합니다.삽입 날짜는

편집 : MSSQL 2012에서 만든
내 테이블 : http://i.imgur.com/TJ3t3y7.png
내 실제 코드는 다음과 같습니다

public void vytvorDotaz(String uzivatel, DateTime cas, String nazev, String dotaz) 
    { 
     int id = getMaxID() + 1; 
     connection.Open(); 
     SqlCommand command = new SqlCommand("insert into otazky values('" + id + "', '" + uzivatel + "', '0','0','0','@cas','" + nazev + "','" + dotaz + "')", connection); 
     command.Parameters.AddWithValue("@cas", DateTime.Now); 
     command.ExecuteNonQuery(); 
     connection.Close(); 
    } 
+2

insert 문에 실제로 ** ** 작은 따옴표가 있거나 잘못 입력 되었습니까? –

+0

사이드 노트 : SQL Server ** 2008 **부터는 'TIME'이라는 새로운 데이터 유형이 있습니다.'time '컬럼을 호출하는 것은 정말로 바람직하지 않습니다. 더 의미 있고 표현력있는 것을 사용하십시오! –

+0

질문에 대해 dummy-sql 대신 실제 SQL을 작성하십시오. 또한 DateTime을 저장하려고하는 열의 유형은 무엇입니까? –

답변

2

여기에 실제 문제는 따옴표 안에 매개 변수를 작성하는 것입니다 그 열은 매개 변수 @cas의 내용이 아닙니다.

따옴표를 제거하면 해당 부분이 작동합니다.

또한 문자열 연결을 사용하여 SQL을 작성하고 모든 매개 변수를 사용하지 말고 SQL 주입 공격이나 따옴표 등으로 인해 두통을 피하십시오. 이는 사용중인 "id", "uzivatel", "nazev"및 "dotav"매개 변수 (메서드 매개 변수)와 관련이 있습니다.

2

는 당신이 필요로하는 것 같은데 : 단일 문자 인용없이

insert into table values(@time) 

.

+0

아 정말 죄송합니다.이 실수는 코드를 지울 때 (보통 1 개 이상의 매개 변수가있는 경우) ... 내 문제는 asp datetime을 SQL datetime으로 변환하는 것입니다. 코드를 편집했지만 thnx – Eleer

0

시도 System.Data.SqlTypes.SqlDateTime 또한 날짜를 저장할 때 혼동을 막기 위해 UTC로 저장하는 것을 고려하십시오. , 당신이 실제로으로 문자열 "@cas"를 삽입하려는

... ,'0','@cas',' ... 
     ^^

이 매개 변수로 @cas 사용하지 않습니다 :

+0

@Darren이 언급 한 것처럼 작은 따옴표가 누락되었습니다. 문제가 될 가능성이 큽니다. –