Сравните дату из базы данных, используя параметры - PullRequest
2 голосов
/ 20 мая 2010
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);

Я попробовал сейчас с параметрами. Но я не знаю, как правильно это сделать. Я пытался так, но параметр datum не получает никакого значения (согласно c #).

Ответы [ 3 ]

3 голосов
/ 20 мая 2010

пожалуйста, попробуйте это:

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
1 голос
/ 20 мая 2010

Хотя обычно полезно опубликовать ошибку, я рискну предположить и скажу, что вы получаете ошибку конверсии с вашей датой.

Вы действительно должны посмотреть на параметризацию ваших запросов ...

Вы должны прочитать это: http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

И если вас это не затруднит, попробуйте изменить переменную 'a' на '1; DROP TABLE оброки; - '(но только после резервного копирования базы данных).

0 голосов
/ 21 мая 2010

Возможно, вам нужно написать свою строку SQL на диалекте SQL базы данных, которую вы используете. В Jet / ACE SQL (что используется Access) в качестве разделителя для значений даты используется #, поэтому вам потребуется:

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

Конечно, некоторые библиотеки интерфейсов данных переводят эти вещи для вас, так что это может не быть проблемой.

...