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);

我现在尝试使用参数。但我真的不知道如何正确地做到这一点。我试过这样,但参数 datum 没有得到任何值(根据 c#)。

4

3 回答 3

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);

当你使用 Date 时,你必须这样写

select * from table where date = '@date'

不喜欢

select * from table where date = @date
于 2010-05-20T13:08:54.873 回答
1

虽然发布错误通常很有用,但我会冒险猜测并说您的日期出现转换错误。

你真的应该看看参数化你的查询......

您应该阅读以下内容:http ://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

如果您不介意阅读,请尝试将“a”变量更改为“1”;放置表obroki;--'(但仅在您备份数据库之后)。

于 2010-05-20T13:09:58.567 回答
0

也许您需要用您正在使用的数据库的 SQL 方言编写您的 SQL 字符串。在 Jet/ACE SQL(Access 使用的)中,日期值的分隔符是 #,所以你需要这个:

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

当然,一些数据接口库会为你翻译这些东西,所以这可能不是这里的问题。

于 2010-05-20T23:41:45.880 回答