对不起我的英语,这非常糟糕。
private void loadDetalle()
{
DateTime today = DateTime.Today;
string todayS = today.ToString("yyyy/MM/dd");
DateTime fechaComparativa = DateTime.Today.AddDays(-30);
string fechaComparativaS = fechaComparativa.ToString("yyyy/MM/dd");
string queryDetalle30DiasIngresos = "select SUM(monto) from finanzas.ingresos WHERE fecha between " + fechaComparativaS + "and" + todayS;
executeQueryDetalle(labelIngreso30, queryDetalle30DiasIngresos);
}
private void executeQueryDetalle(Label Detalle, string query)
{
try
{
mcon.Open();
mcd = new MySqlCommand(query, mcon);
object result = mcd.ExecuteScalar();
Detalle.Text = Convert.ToString(result);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
mcon.Close();
}
}
问题在于:
您的SQL语法出错,请查看与您的MYSQL服务器版本对应的手册,以便在第1行附近使用正确的语法
答案 0 :(得分:0)
我发现您的查询存在3个语法问题:
因此,您的代码应如下所示:
private void loadDetalle()
{
DateTime today = DateTime.Today;
string todayS = today.ToString("yyyy-MM-dd");
DateTime fechaComparativa = DateTime.Today.AddDays(-30);
string fechaComparativaS = fechaComparativa.ToString("yyyy-MM-dd");
string queryDetalle30DiasIngresos = "select SUM(monto) from finanzas.ingresos WHERE fecha between '" + fechaComparativaS + "' and '" + todayS + "'";
executeQueryDetalle(labelIngreso30, queryDetalle30DiasIngresos);
}
如果您以您在代码中描述的格式将日期存储为字符串,即使这样,第2和第3点也适用。
但是,最大的问题是您使用字符串连接来创建查询而不是使用参数化查询。查看this SO topic以获取有关将mysql命令与参数一起使用的示例。