我的问题是:我想通过在两个日期之间总结一个货币类型的列来编写结果。
代码:
using (NpgsqlConnection b = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=xxxxxxxx;DataBase=deneme;"))
{
try
{
b.Open();
NpgsqlCommand c = new NpgsqlCommand("SELECT SUM(tutar) FROM market where tarih between '" + dateTimePicker1.Value + "' and '" + dateTimePicker2.Value + "'", b);
double toplam = ((double)c.ExecuteScalar());
b.Close();
b.Dispose();
MessageBox.Show(toplam.ToString("n"));
}
答案 0 :(得分:2)
尝试转换为十进制而不是双倍。
The Postgres documentation for the "money" type表示输出的格式为“$ 1,000.00”(依赖于语言环境),在这种情况下,您需要解析返回值并在转换之前删除标点符号。
此外,如果是生产代码,您需要参数化SQL而不是在其中附加参数值,否则您可能会遇到潜在的SQL注入攻击,并且可能也存在性能问题。
有一些讨论.NET中货币数据类型的线程可能也会有所帮助。这是一个:Does anyone know of a money type in .NET?