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
# 1 楼答案
更改
CF_VIEW_DAILY_STAT
视图,并在单个结果集中获取所有数据比如
对于这个例子,我更改了列名,因为在这个例子中使用了保留关键字
# 2 楼答案
建议:
'tr'
和'td'
以根据需要填充每一行李># 3 楼答案
使用两个不同的准备好的或可调用的语句,并将获得的两个不同结果集组合起来
String str=rs.getString(1)+“”+rs.getString(2)