1

ここに画像の説明を入力

私の質問は次のとおりです。2 つの日付の間のお金の型である列を合計して結果を書きたいと思います。

コード:

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

1 に答える 1

2

double ではなく decimal にキャストしてみてください。

「お金」タイプの Postgres ドキュメントでは、出力が「$1,000.00」(ロケールに依存) の形式であることが示唆されています。この場合、キャストする前に戻り値を解析し、句読点を削除する必要があります。

また、それが本番コードである場合は、そこにパラメーター値を追加する代わりに SQL をパラメーター化する必要があります。そうしないと、SQL インジェクション攻撃を受ける可能性があり、パフォーマンスの問題も発生する可能性があります。

.NET の通貨データ型について議論しているスレッドもいくつかあり、これも役立つかもしれません。ここに 1 つ: .NET のお金の型を知っている人はいますか?

于 2011-07-30T15:49:32.173 に答える