【问题标题】:Logs for SQL queries in Java using Eclipse使用 Eclipse 记录 Java 中的 SQL 查询
【发布时间】:2016-03-17 14:39:57
【问题描述】:

如果我使用以下代码查询数据库,我在哪里可以找到该进程的日志文件?我正在寻找发送到数据库的内容。该查询适用于 SQL Server Management Studio。数据库是 MS-SQL 2008。

 try{
 Class.forName("net.sourceforge.jtds.jdbc.Driver");

        String userName = "dbuser";
        String password = "dbpswd";
        String url = "jdbc:jtds:sqlserver://server:1043"+";databaseName=databasename";
        Connection con = DriverManager.getConnection(url,userName,password);
        Statement stm = con.createStatement();
        ResultSet rs = stm.executeQuery
                ("SELECT users.id,users.role FROM users WHERE users.username = 'xusername' AND users.password = 'xpswd' AND users.active = 1");
 }

代码运行时返回

 'No current row in the ResultSet.'

如果我使用

 System.out.println(stm);

返回

 net.sourceforge.jtds.jdbc.JtdsStatement@7fd2c698

【问题讨论】:

  • System.out.println(stm);将对象引用打印到控制台...发送到数据库的是 SQL 查询(显然还有身份验证信息)。除此之外,您的代码工作正常。否则你会得到一个例外。您期望有多少结果?
  • 我是 Java 新手,请多多包涵。我期待一个结果。我以 while(rs.next()){System.out.println(rs.getString("id"));} 的形式使用了 Chris311 建议,我得到了我的结果。那么,如果你只期待一个结果,你如何得到你的结果呢?一定要使用while循环吗?
  • 有时很高兴看到数据库从代码中收到的查询。有没有办法在 eclipse/java 设置中捕获它?我来自 ColdFusion,当它出现错误时,调试将提供查询。
  • 如果您期望多个结果,则需要一个 while 循环。否则 rs.next();就足够了。 (检查它是返回真还是假。后者意味着你得到一个空的结果集)。我建议你看看这个:docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html
  • 您可以将 SQL 查询分配给字符串变量,而不是直接传递它。这样你就可以登录了。除此之外,您可能还想查看准备好的语句。这不会解决显示 SQL 语句的问题,但出于安全原因,我会推荐它;)

标签: java sql-server eclipse sql-server-2008 logging


【解决方案1】:

你必须使用

rs.next()

检索第一个条目。 ResultSet 光标最初位于第一行之前。

【讨论】:

  • 感谢 Chris311。我是java新手。我使用了这个 while(rs.next()){System.out.println(rs.getString("id"));} 并得到了我的结果。当您只期望一个结果时,是否必须使用 while 循环?
  • @user1088014 不,您不必这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多