【问题标题】:SQL query using MySQL #JAVA使用 MySQL #JAVA 的 SQL 查询
【发布时间】:2018-06-26 22:58:04
【问题描述】:

这是我下面的数据库,我正在用 java 编码,我的工作区是 eclipse

我的问题是这样的:我正在尝试对每个月的列 monthlypaid 求和,例如在一月份,除了 appartmentnum :1 每个人都支付 其中值 0 表示(当月未支付)

所以一月530+530+700+660+490+200

570+530+700+200 以后

我应该像这样打印 1, 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;

}

【问题讨论】:

  • 你可以发布预期的输出而不是图像吗?

标签: java mysql sql eclipse


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多