InvalidCastException в Npgsql - PullRequest
       12

InvalidCastException в Npgsql

1 голос
/ 30 июля 2011

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 Ответ

2 голосов
/ 30 июля 2011

Попробуйте привести к десятичному числу вместо двойного.

Документация Postgres для типа "money" предполагает, что вывод находится в форме "$ 1,000.00" (зависит от локали), вв этом случае вам нужно будет проанализировать возвращаемое значение и удалить пунктуацию перед приведением.

Кроме того, если это производственный код, вы захотите параметризовать свой SQL вместо добавления туда значений параметров, в противном случае вы 'Он открыт для потенциальных атак с использованием SQL-инъекций и может также иметь проблемы с производительностью.

В .NET есть несколько потоков, обсуждающих типы валютных данных, которые также могут быть полезны.Вот один из них: Кто-нибудь знает тип денег в .NET?

...