2015-02-02 4 views
0

임대 테이블에 rent_date 및 return_date 열이 있고 데이터 유형이 Date입니다. 나는 그들을 위해 두 개의 다른 문자열을 만들었습니다. rentDate는 현재 날짜이고 returnDate는 현재 날짜로부터 제품이 대여 된 날짜를 더할 때의 출력입니다. to_date를 사용하여 문자열을 변환하려고했지만 오류가 표시되었습니다. 데이터 형식 varchar2 (30) 함께 시도했다. 잘 했어. 하지만 늦게 돌아 오는 날짜를 원하기 때문에 Date로 수정해야했습니다. 누구든지이 쿼리에 어떤 문제가 있는지 말해 줄 수 있습니까?문자열을 Date 데이터 유형으로 변환하고 데이터베이스에 삽입

DateTime dt = System.DateTime.Now; 
string rentDate = dt.ToString(); 

// this is added to the current date of the user input and showed in the form 
string returnDate = label66.Text; 

string Query = "Insert into rental (pr_ID, cid, rent_date, Return_date, status, receipt_no) values ('" + comboBox5.Text + "' , '" + comboBox4.Text + "', (to_date('" + rentDate + "','dd/mm/yyyy')), (to_date('" + returnDate + "','dd/mm/yyyy')), '" + Status + "', '" + txt_recpt.Text + "') "; 
+11

왜 'DateTime'값을 '문자열'로 유지합니까? [이것은 완전히 잘못되었습니다.] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data-type.aspx). 'DateTime' 값을 직접 쿼리에 넣지 않는 이유는 무엇입니까? 항상 [매개 변수가있는 쿼리] (http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/)를 사용해야합니다. 이러한 종류의 문자열 연결은 [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection) 공격에 개방적입니다. –

+0

이전 의견에서 "Soner"와 완전히 동의합니다. 해당 문자열 concat - 매개 변수가있는 쿼리 대신 이동하십시오! http://www.dotnetperls.com/sqlparameter – Sandman

+0

원인 DateTime 값을 쿼리에서 직접 dd/mm/yyyy 형식으로 전달할 수 없습니다. 내가 어떻게 해? 나는 여기 며칠 동안 붙어있다. – user3132223

답변

0

어떤 오류가 발생하고 있습니까?

"Soner"는 텍스트 값이 아니어야한다고 동의합니다. 그러나 기존 코드를 기반으로하면 형식 오류가 발생할 수 있습니다.

"rentDate"및 "returnDate"의 문자열 값 형식은 무엇입니까? INSERT 쿼리에서 지정한 것과 같아야합니다 ("dd/mm/yyyy"). 그렇지 않은 경우 오류가 발생합니다.

TO_DATE 함수의 두 번째 매개 변수는 입력 변수의 형식입니다.

다른 오류가 발생하지 않는 한?

관련 문제