2010-05-20 7 views
2
string queryString = "SELECT SUM(skupaj_kalorij)as Skupaj_Kalorij " 
       + "FROM (obroki_save LEFT JOIN users ON obroki_save.ID_uporabnika=users.ID)" 
       + "WHERE (users.ID= " + a.ToString() + ") AND (obroki_save.datum= @datum)"; 

      using (OleDbCommand cmd = new OleDbCommand(queryString,database))          
       { 
        DateTime datum = DateTime.Today; 
        cmd.Parameters.AddWithValue("@datum", datum); 
       } 
      loadDataGrid2(queryString); 

이제 매개 변수를 사용해 보았습니다. 그러나 나는 그것을 정확하게하는 법을 정말로 모른다. 나는 이런 식으로 시도했지만 매개 변수 데이텀은 C#에 따라 어떤 값도 얻지 못합니다.데이터베이스를 사용하여 데이터베이스와 날짜를 비교하십시오.

+1

무엇이 오류입니까? –

+1

어떤 오류가 있습니까? 또한 당신은 날짜를 비교하고 있습니까, 나는 당신이 날짜를 만들지 만 그것을 사용하지 않는 것을 볼 수 있습니까? – Pharabus

+1

ToShortDateString이 SQL이 인식하지 못하는 형식으로 날짜를 반환한다는 오류가 발생할 수 있습니다. 일반적으로 쿼리에서 매개 변수를 전달할 때는 매개 변수를 사용하는 것이 더 좋습니다. 그러나 실제로 어떤 오류가 발생했는지 표시하지 않고 오류의 원인이 완전히 다른 것인지 여부를 판단하기는 어렵습니다. – user192472

답변

3

이 시도하십시오 : 당신은 날짜와 함께 사용할 때

database = new OleDbConnection(connectionString); 
       database.Open(); 
       date = DateTime.Now.ToShortDateString(); 
       string queryString = "SELECT SUM(skupaj_kalorij)as Skupaj_Kalorij " 
        + "FROM (obroki_save LEFT JOIN users ON obroki_save.ID_uporabnika=users.ID)" 
        + "WHERE users.ID= " + a.ToString()+" AND obroki_save.datum= '" +DateTime.Today.ToShortDateString() + "'"; 
       loadDataGrid2(queryString); 

, 당신이

select * from table where date = '@date' 

처럼 작성해야하지

select * from table where date = @date 
+0

그게 전부입니다. 감사합니다. – Simon

+0

하지만 사람. 나는 결과를 얻지 못한다 .... 나는 데이터 형식을 데이터베이스의 텍스트에서 텍스트로 변경했다. 이제 날짜/시간으로 다시 변경하고 조건문에서 잘못된 데이터 형식을 나타내는 오류가 발생합니다. – Simon

+0

사용 DateTime.Now.ToString(); 대신 DateTime.Now.ToShortDateString(); –

1

을 좋아하는이 오류를 게시하는 것이 유용하지만 , 나는 추측을 위험에 빠뜨리고 당신이 당신의 날짜로 전환 오류를 얻고 있다고 말합니다. http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

을 그리고 당신은 독서를 방해 할 수없는 경우 그 다음 '에'A '변수를 변경 시도 :

당신은 정말 당신의 쿼리를 변수 설정 봐야한다 ...

이 읽어야 1; DROP TABLE obroki; - '(하지만 데이터베이스를 백업 한 후에 만).

+0

날짜가있는 항목입니다. 그것 없이는 작동하지 마십시오 – Simon

+0

날짜의 # 구분 기호를 사용해 보셨습니까? –

+1

BTW, Jet/ACE는 한 번에 하나의 SQL 문만 실행하므로 해당 SQL 주입 취약점에 취약하지 않습니다. –

0

아마 당신은 사용중인 데이터베이스의 SQL 언어로 SQL 문자열을 작성해야합니다. 즉 수도 있으므로,

물론
obroki_save.datum= #" +DateTime.Today.ToShortDateString() + "#" 

, 일부 데이터 인터페이스 라이브러리가 당신을 위해이 일을 번역 : 당신이 필요할 것 때문에/ACE SQL (Access에서 사용되는 것) 제트에서 날짜 값에 대한 구분 기호는 #입니다 여기서 문제가되지 마라.

+0

작동하지 않습니다. – Simon

관련 문제