区块链技术博客
www.b2bchain.cn

在JSP中使用JAVA将SQL数据追加到数据表中 – java程序员分享

本文介绍了在JSP中使用JAVA将SQL数据追加到数据表中 – java程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

在所有条件过滤和求和查询执行之后,我的SQL Server中具有以下结果集。

在JSP中使用JAVA将SQL数据追加到数据表中 - java

我希望在我的页面中显示为此类(请参阅下面的屏幕截图)。

在JSP中使用JAVA将SQL数据追加到数据表中 - java

我尝试了下面的JAVA代码,这些代码给了我附加到数据表中的结果。

<% ArrayList<String[]> rows = sqlq.querySQL(); String rowsetdate = new String(); String rowres1 = new String();     for(String[] rowset : rows) {        rowsetdate = rowset[0];       rowres1 = rowres1 + rowset[1]+ ",";         for(String rowres2 : rowset) {         rowres1 = rowres1 + rowres2 + ",";          }       rowres1 = rowres1.substring(0, rowres1.length()-1);       rowres1 = rowres1 + "|";      } rowres1 = rowres1.substring(0, rowres1.length()-1); %>  <tr> <td><%if (rowres1  == null) out.print(""); else out.print(rowres1);%></td> </tr> 

sqlq.querySQL()用于将我的SQL查询发送到JDBC,以便我将查询发送到我的数据库。

下面的照片是代码执行后在我的数据表中附加的数据,左侧是日期,右侧是数据。

在JSP中使用JAVA将SQL数据追加到数据表中 - java

我尝试了一些不同的代码,

<% ArrayList<String[]> rows = sqlq.querySQL();  for(String[] rowset : rows) { <tr> <td><%if (rowset[0]  == null) out.print(""); else out.print(rowset[0]);%></td> <td><%if (rowset[1]  == null) out.print(""); else out.print(rowset[1]);%></td> </tr> } %> 

它也没有达到我的预期结果,它返回的数据就像我在SSMS中看到的一样(请查看下面的屏幕截图)

在JSP中使用JAVA将SQL数据追加到数据表中 - java

我做错了什么,应该如何做才能达到预期的效果? (下面的截图)

在JSP中使用JAVA将SQL数据追加到数据表中 - java

感谢大家的帮助。

参考方案

您可以使用键为date且其值再次为Map的Map。内部地图使用trans作为键,使用sumtot作为值。

    Map<String, Map<String, String>> mapByDate = new HashMap<>();     TreeSet<String> allTrans = new TreeSet<>();      for (String[] row : rows) {       Map<String, String> mapByDateAndTrans = mapByDate.get(row[0]);       if (mapByDateAndTrans == null) {         mapByDateAndTrans = new HashMap<>();       }       mapByDateAndTrans.put(row[1], row[2]);       mapByDate.put(row[0], mapByDateAndTrans);       allTrans.add(row[1]);     } 

这是一个示例代码,可以打印数据:

    System.out.println("Date/Trans: " + allTrans);     for (Map.Entry<String, Map<String, String>> mapByDateEntry : mapByDate.entrySet()) {       System.out.print(mapByDateEntry.getKey() + ": ");       Map<String, String> mapByTrans = mapByDateEntry.getValue();       for (String trans : allTrans) {         String sumtot = mapByTrans.get(trans);         if (sumtot != null) {           System.out.print("[ " + sumtot + " ]");         } else {           System.out.print("[   ]");         }       }       System.out.println();     } 

输出:

Date/Trans: [11200, 11201, 11202] 2019-07-02: [ 136 ][ 18 ][ 14 ] 2019-07-03: [ 164 ][ 10 ][ 8 ] 

或者我们可以生成一个HTML表内容:

    StringBuilder tableBuilder = new StringBuilder("<table border = 1>");     // table header     tableBuilder.append("<tr>");     tableBuilder.append("<th>date/trans</th>");     for (String trans : allTrans) {       tableBuilder.append("<th>").append(trans).append("</th>");     }     tableBuilder.append("</tr>");      // table rows     for (Map.Entry<String, Map<String, String>> mapByDateEntry : mapByDate.entrySet()) {       tableBuilder.append("<tr>");       tableBuilder.append("<td>").append(mapByDateEntry.getKey()).append("</td>");       Map<String, String> mapByTrans = mapByDateEntry.getValue();       for (String trans : allTrans) {         String sumtot = mapByTrans.get(trans);         if (sumtot != null) {           tableBuilder.append("<td>").append(sumtot).append("</td>");         } else {           tableBuilder.append("<td></td>");         }       }       tableBuilder.append("<tr>");     }     tableBuilder.append("</table>");      System.out.println(tableBuilder.toString()); 

输出:

<table border = 1><tr><th>date/trans</th><th>11200</th><th>11201</th><th>11202</th></tr><tr><td>2019-07-02</td><td>136</td><td>18</td><td>14</td><tr><tr><td>2019-07-03</td><td>164</td><td>10</td><td>8</td><tr></table> 

如果我们将生成的输出另存为HTML文件,则可能是您想要的结果(以下屏幕截图)。您还可以更改要在JSP中使用的代码:

在JSP中使用JAVA将SQL数据追加到数据表中 - java

要通过键的自然顺序获得有序的Map,可以使用TreeMap。因此,要按日期打印数据,我们可以构造一个包含mapByDate数据的新TreeMap:

    TreeMap<String, Map<String, String>> sortedMapByDate = new TreeMap<>(mapByDate);     // table rows     for (Map.Entry<String, Map<String, String>> mapByDateEntry : sortedMapByDate.entrySet()) {       tableBuilder.append("<tr>");       tableBuilder.append("<td>").append(mapByDateEntry.getKey()).append("</td>");       Map<String, String> mapByTrans = mapByDateEntry.getValue();       for (String trans : allTrans) {         String sumtot = mapByTrans.get(trans);         if (sumtot != null) {           tableBuilder.append("<td>").append(sumtot).append("</td>");         } else {           tableBuilder.append("<td></td>");         }       }       tableBuilder.append("<tr>");     } 

当我写下面的代码时,编译器说 无法从ArrayList<String>转换为List<Comparable>private List<Comparable> get(){ return new ArrayList<String>(); } 但是当我用通配符编写返回类型时,代码会编译。private List&l…

朋友们,我一直在尝试很多,阅读了很多论坛,但无法理解为什么出现此问题。我使用契约优先方法创建了一个Jax-WS WebService。创建WSDL和XSD,然后使用wsimport工具生成其余工件,为SEI提供实现。将WebService应用程序部署到Eclipse Helios中的GlassFish(Glassfish适配器和Eclipse中安装的插件)。…

请原谅我;我对Struts有点陌生。我遇到一个问题,即页面加载而不是我实际提交表单时发生了验证。我整天都在论坛上搜寻和搜寻,没有任何运气。我显然做错了一些事情,应该很容易确定,但是我还没有发现问题所在。这是我的struts.xml的片段:<action name="*Test" method="{1}" clas…

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…

鉴于: List<Integer> integers = new ArrayList<>(Arrays.asList( 10, 12 )); List<Optional<Integer>> optionalIntegers = Arrays.asList( Optional.of(5), Optional.em…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 在JSP中使用JAVA将SQL数据追加到数据表中 – java程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们