LSB71 Ответов: 1

C # windows sqlite две цифры после десятичной точки с суммой


Привет,

Я натыкаюсь на этот SQL оператор чей код это:

var query = "SELECT SUM(replace(montant_total_cmd, ',', '')) FROM Tble_Commande WHERE Annee = '" + Annee_en_Cour + "'";
         using (var cmd = new SQLiteCommand(query, Program.Connex_Bdd))
         {
           int sum = Convert.ToInt32(cmd.ExecuteScalar());
             Program.Montant_ttle = cmd.ExecuteScalar().ToString();
             MessageBox.Show(string.Format("{0:0.00}", sum));
         }

В этом примере я хочу найти сумму (145.15 + 191.86 + 117.60 + 218.80) который обычно делает 673.41

Кто может помочь мне найти истинное значение с двумя цифрами после десятичной точки?
спасибо
Бруно

Что я уже пробовал:

But with the value below I get 67341

<pre lang="c#">
cmd.ExecuteScalar().ToString()

и с приведенным ниже значением я получаю 67341.00

string.Format("{0:0.00}", sum)

Несмотря на мои исследования, я не могу получить 673.41

В моей базе данных Sqlite у меня есть запятые, а не реальные точки типа.

Я думал об этом решении ниже, но результат дает следующее 67341

double sum = Convert.ToInt32(cmd.ExecuteScalar());
                 MessageBox.Show("" + Math.Round(sum, 2));


Richard Deeming

var query = "SELECT SUM(replace(montant_total_cmd, ',', '')) FROM Tble_Commande WHERE Annee = '" + Annee_en_Cour + "'";

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

1 Ответов

Рейтинг:
11

Richard MacCutchan

Почему вы преобразуете возвращаемое значение в целое число? Это просто разрушает дробную часть. Попробовать это:

double sum = (double)cmd.ExecuteScalar();
MessageBox.Show(string.Format("{0:0.00}", sum));