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#)。
答案 0 :(得分: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
答案 1 :(得分:1)
虽然发布错误通常很有用,但我会冒险猜测您的日期会出现转换错误。
你应该真正考虑参数化你的查询...
您应该阅读:http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
如果您无法阅读,请尝试将'a'变量更改为'1; DROP TABLE obroki; - '(但只有在备份数据库之后)。
答案 2 :(得分:0)
也许您需要在您正在使用的数据库的SQL方言中编写SQL字符串。在Jet / ACE SQL(Access使用的内容)中,日期值的分隔符是#,所以你需要这个:
obroki_save.datum= #" +DateTime.Today.ToShortDateString() + "#"
当然,有些数据接口库会为您翻译这些内容,因此这可能不是问题所在。