Npgsql中的InvalidCastException

时间:2011-07-30 15:15:36

标签: c# postgresql npgsql

enter image description here

我的问题是:我想通过在两个日期之间总结一个货币类型的列来编写结果。

代码:

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

1 个答案:

答案 0 :(得分:2)

尝试转换为十进制而不是双倍。

The Postgres documentation for the "money" type表示输出的格式为“$ 1,000.00”(依赖于语言环境),在这种情况下,您需要解析返回值并在转换之前删除标点符号。

此外,如果是生产代码,您需要参数化SQL而不是在其中附加参数值,否则您可能会遇到潜在的SQL注入攻击,并且可能也存在性能问题。

有一些讨论.NET中货币数据类型的线程可能也会有所帮助。这是一个:Does anyone know of a money type in .NET?