2010-05-20 83 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

什麼是錯誤? – 2010-05-20 13:07:19

+1

什麼錯誤?你還在哪裏比較一個日期,我可以看到你創建日期但不使用它? – Pharabus 2010-05-20 13:08:44

+1

錯誤可能是ToShortDateString以SQL無法識別的格式返回日期。 (通常使用參數傳遞查詢中的參數會更好。)但是,如果沒有指出實際發生了什麼錯誤,則很難判斷錯誤的原因是否是完全不同的。 – user192472 2010-05-20 13:10:46

回答

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 2010-05-20 13:28:35

+0

但是男人。我現在沒有得到任何結果.... Couse我將數據類型從日期更改爲數據庫中的文本。現在我把它改回日期/時間,並且我得到一個錯誤,說明在條件語句中錯誤的數據類型。 – Simon 2010-05-20 13:34:32

+0

使用DateTime.Now.ToString();而不是DateTime.Now.ToShortDateString(); – 2010-05-20 13:39:28

1

雖然它通常是有用的發佈錯誤,我會冒險猜測,並說您的日期會出現轉換錯誤。

你真的應該看看你的參數化查詢......

你應該閱讀:http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

如果你不能打擾讀數,然後試着改變你的「A」變量' 1; DROP TABLE obroki; - '(但只有在備份數據庫後)。

+0

IT與日期有關。 Couse在沒有它的情況下工作 – Simon 2010-05-20 13:21:07

+0

您是否嘗試過日期的#分隔符? – 2010-05-21 19:50:51

+1

順便說一下,Jet/ACE不容易受到特定SQL注入漏洞的攻擊,因爲它一次只能執行一條SQL語句。 – 2010-06-15 19:46:31

0

也許你需要在你使用的數據庫的SQL方言中編寫你的SQL字符串。在噴氣/ ACE SQL(什麼是使用由Access),日期值分隔符是#,所以你需要這樣的:

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

當然,有些數據接口庫爲您翻譯這些東西,這樣就可能這裏不是問題。

+0

不。不起作用。 – Simon 2010-06-14 16:12:44

相關問題