有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javasql生成表

下面是我的代码。我试图在同一张桌子上得到这两个结果,但不知何故,我只能在不同的桌子上得到它们。是否有办法将两个表链接在一起

例如:

Result1:

活动日

年份\\\Day\\总计

2014\\\1\\\我的

结果2:

时机

年份\\\月份\\\总计

2014\\\12\SG

活动日时间安排

年\ \日\ \总计\ \月\ \总计

2014\\\ 1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    public static String Summary() {

            String strResult="", result1="", result2=""
            Connection conn = null;

            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection(DB_URL, USER, PASS);
                String sql;             
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                Connection connection = DriverManager.getConnection(url);   
                Statement statement = connection.createStatement();
                sql = "EXECUTE GEOIP.dbo.CF_VIEW_DAILY_STAT'"+yesterdayDate()+"';";
                CallableStatement cstmt = connection.prepareCall(sql);  
                boolean hasMoreResultSets = cstmt.execute();  

          if (!hasMoreResultSets) {
                //System.out.println("The first result is not a ResultSet.");
                return strResult;
              } 

//First Result
                       ResultSet rs = cstmt.getResultSet();
                       result1 = "<table cellpadding='2' cellspacing='0' border='1'><tbody>"
                    + "<tr class='title1'><td colspan='4'>Active Day</td></tr>"
                    + "<tr class='title2'><td class='v_date' style='text-align:left'>Date</td><td class='v_number'>Day (s)</td><td class='v_number'>Country / Total</td><td class='v_number'>Active Count</td>" 
                    + "</tr>";

            while (rs.next()) {     
                result1 += "<tr>"
                        + "<td id='col1row1' class='v_date'>" + rs.getString("StatDt") + "</td><td class='v_number'>" + String.format("%,d", rs.getInt("ActiveDay")) 
                        + "</td><td class='v_number'>" + rs.getString("Country") + "</td><td class='v_number'>" + String.format("%,d", rs.getInt("ActiveCnt")) + "</td>"
                        +"</tr>";
            }       
            result1 += "</tbody></table><br/><br/>";
            rs.close();

//Second Result                
                hasMoreResultSets = cstmt.getMoreResults();
                if (!hasMoreResultSets) {
                //System.out.println("The first result is not a ResultSet.");
                return strResult;
              }
            ResultSet rs = cstmt.getResultSet();    
            result2 = "<table cellpadding='2' cellspacing='0' border='1'><tbody>"
                    + "<tr class='title1'><td colspan='3'>Conversion</td></tr>"
                    + "<tr class='title2'><td class='v_date'>Date</td><td class='v_number'>NRU</td>"
                    + "<td class='v_number'>NRU_Play</td>" 
                    + "</tr>"; 
            while (rs.next()) {                     
                result2 += "<tr>"
                        +  "<td class='v_date'>"+ rs.getString("StatDt") + "</td><td class='v_number'>" + String.format("%,d", rs.getInt("NRU"))
                        + "</td><td class='v_number'>" + String.format("%,d", rs.getInt("NRU_Play"))
                        + "</tr>";
            }           
            result2 += "</tbody></table><br/><br/>";            
            rs.close();     
            cstmt.close();
            connection.close();

                    } catch (SQLException se) {
               // Handle errors for JDBC
               se.printStackTrace();
                    } catch (Exception e) {
               // Handle errors for Class.forName
               e.printStackTrace(); 
            }       

                strResult = result1 + result2;
                System.out.print(strResult);    
                return strResult;   
      } 

我怎么可能把它们放在同一行,比如把它们连在一起[忽略年份,因为年份是一样的]。有什么帮助吗?我不熟悉SQL


共 (3) 个答案

  1. # 1 楼答案

    更改CF_VIEW_DAILY_STAT视图,并在单个结果集中获取所有数据

    比如

    SELECT Year1,Day1,Total1
    FROM @ActiveDay
    UNION
    SELECT Month1,Total1
    FROM @Timing
    

    对于这个例子,我更改了列名,因为在这个例子中使用了保留关键字

  2. # 2 楼答案

    建议

    • 创建一个公共java对象来存储从两个结果集中读取的数据
    • 读取第一个结果集并填充数据对象
    • 读取下一个结果集,并用其余字段填充数据对象
    • 现在,在数据对象中循环找到所填充的大量项 带着
    • 构造html 'tr''td'以根据需要填充每一行
  3. # 3 楼答案

    使用两个不同的准备好的或可调用的语句,并将获得的两个不同结果集组合起来

    String str=rs.getString(1)+“”+rs.getString(2)