使用mysql#java进行sql查询

lymnna71  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(227)

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

我的问题是这样的:我正在努力总结这一列 monthlypaid 例如一月的每个月,除了appartmentnum:1,每个月都支付,其中值0表示(当月未支付)
所以在一月530+530+700+660+490+200
5月570+530+700+200日
我应该这样打印,1月1日和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;

}
vwhgwdsa

vwhgwdsa1#

您可以尝试:

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

相关问题