请求表中的两个日期时间,但只获取到一个日期时间。

huangapple 未分类评论50阅读模式
英文:

Requesting two datetimes out of a table, but only getting one

问题

以下是您要翻译的内容:

我正在尝试从数据库中获取两个日期时间值,但每次只能获取其中一个。我的意思是,如果我从查询中删除我获取的列(begintijd),我可以获取另一列(eindtijd)。

  1. con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "username", "password");
  2. resultTable = new ArrayList<>();
  3. Statement statement = con.createStatement();
  4. statement.execute(query)
  5. ResultSet result = statement.getResultSet();
  6. ResultSetMetaData resultData = result.getMetaData();
  7. while (result.next()) {
  8. Map<String, Object> row = new HashMap<>();
  9. for (int i = 1; i <= resultData.getColumnCount(); i++) {
  10. String type = resultData.getColumnTypeName(i);
  11. switch (type) {
  12. case "INT":
  13. row.put(resultData.getColumnName(i), result.getInt(i));
  14. break;
  15. case "VARCHAR":
  16. case "CHAR":
  17. case "TEXT":
  18. row.put(resultData.getColumnName(i), result.getString(i));
  19. break;
  20. case "DATETIME":
  21. row.put(resultData.getColumnName(i), new java.util.Date(result.getTimestamp(i).getTime()));
  22. break;
  23. default:
  24. throw new IllegalArgumentException("Data type not supported");
  25. }
  26. i++;
  27. }
  28. resultTable.add(row);
  29. }

这是我的主要部分:

  1. String query = "SELECT begintijd, eindtijd, lesID FROM calendar WHERE lesID = 1";
  2. ArrayList<Map<String, Object>> resultTable = Database.executeStatement(query);
  3. System.out.println(resultTable);

结果是这样的(没有错误):

  1. [{begintijd=Tue Apr 07 08:30:00 CEST 2020, lesID=1}]

这是我的数据库的截图:

请求表中的两个日期时间,但只获取到一个日期时间。

我的java.util.Date实现有问题吗?

英文:

I'm trying to get two datetime values out of a database, but I'm only get one of them at a time. By that I mean that if I remove the column I do get (begintijd) from the query I do get the other column (eindtijd).

  1. con = DriverManager.getConnection(&quot;jdbc:mysql://localhost:3306/db&quot;, &quot;username&quot;, &quot;password&quot;);
  2. resultTable = new ArrayList&lt;&gt;();
  3. Statement statement = con.createStatement();
  4. statement.execute(query)
  5. ResultSet result = statement.getResultSet();
  6. ResultSetMetaData resultData = result.getMetaData();
  7. while (result.next()) {
  8. Map&lt;String, Object&gt; row = new HashMap&lt;&gt;();
  9. for (int i = 1; i &lt;= resultData.getColumnCount(); i++) {
  10. String type = resultData.getColumnTypeName(i);
  11. switch (type) {
  12. case &quot;INT&quot;:
  13. row.put(resultData.getColumnName(i), result.getInt(i));
  14. break;
  15. case &quot;VARCHAR&quot;:
  16. case &quot;CHAR&quot;:
  17. case &quot;TEXT&quot;:
  18. row.put(resultData.getColumnName(i), result.getString(i));
  19. break;
  20. case &quot;DATETIME&quot;:
  21. row.put(resultData.getColumnName(i), new java.util.Date(result.getTimestamp(i).getTime()));
  22. break;
  23. default:
  24. throw new IllegalArgumentException(&quot;Data type not supported&quot;);
  25. }
  26. i++;
  27. }
  28. resultTable.add(row);
  29. }

This is my main:

  1. String query = &quot;SELECT begintijd, eindtijd, lesID FROM calendar WHERE lesID = 1&quot;;
  2. ArrayList&lt;Map&lt;String, Object&gt;&gt; resultTable = Database.executeStatement(query);
  3. System.out.println(resultTable);

As a result I get this (no errors):

  1. [{begintijd=Tue Apr 07 08:30:00 CEST 2020, lesID=1}]

Here's a screenshot of my database:

请求表中的两个日期时间,但只获取到一个日期时间。

Is there something wrong with my implementation of java.util.Date, or what?

答案1

得分: 0

所以我很笨。
我使用了一个递增的for循环,然后在每个周期结束时再次增加了索引,从而跳过了偶数列。

英文:

So I'm dumb.
I used an incremental for loop, and then incremented the index again at the end of each cycle, essentially skipping the even columns.

huangapple
  • 本文由 发表于 2020年4月7日 21:44:12
  • 转载请务必保留本文链接:https://java.coder-hub.com/61081461.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定