SQL-запрос с использованием MySQL #JAVA

0

Это моя база данных ниже. Я кодирую java, и мое рабочее пространство - eclipse.

Изображение 174551

Мой вопрос звучит так: я пытаюсь суммировать столбцы monthlypaid для каждого месяца, например, в январе, за исключением appartmentnum: 1 каждый платит, где значение 0 означает (не выплачивалось в этом месяце)

Так в январе 530 + 530 + 700 + 660 + 490 + 200

и может быть 570 + 530 + 700 + 200

Я должен напечатать это, как это, 1, январь sum 2, febsum, и у меня нет подсказки, как это сделать

Я пробовал это, но я думаю, что я далеко от решения

public static String select_Month_payment(String username) {
    int i=1;
    String answer="",ans="";
     try {
         PreparedStatement statement = connect.prepareStatement("select january,february,march,april,may,june,july,august,september,october,november,december from tenant where username= "+"'"+username+"'");
         ResultSet result = statement.executeQuery();

     while(result.next()) 
     {
         for (i=1;i<13;i++)
         {
            answer=result.getString(i);
           if(!answer.matches("0") )
               ans+= answer + "  " ;
         }


      }
     } catch (SQLException var2) {
         var2.printStackTrace();
     }
     return ans;

}
  • 0
    Вы могли бы опубликовать ожидаемый вывод вместо изображения?
Теги:

1 ответ

1

Вы можете попробовать:

Double sum = 0.0;
PreparedStatement pstmt = conn.prepareStatement("SELECT sum(monthlyPaid) as ans FROM tenant WHERE username = ?");
pstmt.setString(1, YOUR_USER_NAME);
res = pstmt.executeQuery();

sum = res.getString(1);

В SQL есть встроенная функция, которая возвращает сумму столбца. Возможно, вам не захочется изобретать колесо, когда оно уже есть.

ПЛЮС:

Конкатенация переменной по вашему запросу является плохой практикой. Ваше приложение будет уязвимым для sql injections. Использовать ? вместо этого он называется named perimeters как этот: pstmt.setDouble(n, YOUR_VARIABLE); ,

Для получения дополнительной информации см. Https://www.javaworld.com/article/2077706/core-java/named-parameters-for-preparedstatement.html.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню