【问题标题】:I am having trouble using the SQL result set with JDBC [duplicate]我在使用带有 JDBC 的 SQL 结果集时遇到问题 [重复]
【发布时间】:2017-03-17 04:25:23
【问题描述】:

这是我的代码:

ResultSet res = con.query("USE VSM; SELECT max(EmailTime) FROM Emails;");
if( ! res.next()) { lastEmailTime = new Date(0); } // if table empty set last email time to 1970
else { lastEmailTime = SQLServer.sdf.parse(res.getString(1)); } //SQL is 1-indexed

我的表目前是空的,但 else 语句中的代码正在运行。我知道这一点是因为我得到一个关于它试图访问 res.getString(1) 的空指针异常。为什么它不符合 if 条件??

【问题讨论】:

  • 里面有USE VSM; 看起来很奇怪。可以试试去掉吗?
  • 一次只能执行一条语句。我不认为 USE 可以与 JDBC 一起使用。如果需要指定默认模式,则需要为表名添加前缀:SELECT max(EmailTime) FROM VSM.Emails
  • 哇,好吧。我怎么知道它会使用正确的数据库呢?
  • 正如我刚才提到的,表前缀:) VSM.Emails
  • 我怎么知道它会使用正确的数据库你可以在你的连接 url 上指定数据库

标签: java sql sql-server jdbc resultset


【解决方案1】:

在 jdbc url 连接中已经定义了您使用的数据库。 您不需要在每个请求中都设置数据库;

    ResultSet res = con.query("SELECT max(EmailTime) FROM Emails;");

if( ! res.next() || res.getString(1) == null) { lastEmailTime = new Date(0); } // if table empty set last email time to 1970
else { lastEmailTime = SQLServer.sdf.parse(res.getString(1)); } //SQL is 1-indexed

【讨论】:

  • 感谢您的帮助,但仍然有错误
  • 你能在数据库中运行相同的查询并发布结果吗?
  • EmailProcedure 的 java.text.DateFormat.parse(Unknown Source) 处的 java.text.SimpleDateFormat.parse(Unknown Source) 处的线程“main”java.lang.NullPointerException 异常。( EmailProcedure.java:26) 在 MainWindow.(MainWindow.java:60) 在 MainWindow.main(MainWindow.java:128)
  • 我要求您在数据库上运行查询,而不是打印 stackTrace...打开 sqldeveloper、phpmyadmin 或您拥有的任何其他数据库管理界面并运行您尝试执行的相同查询
  • 在 SQL Server Management Studio 上运行只会给出“命令已成功完成”。没有返回实际数据
猜你喜欢
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 2019-09-10
  • 2019-11-16
相关资源
最近更新 更多