通过命令行和JDBC查询获取的结果之间的差异

时间:2014-03-18 09:46:09

标签: java jdbc sqlite

我有一个包含表格的SQLITE数据库: 服务= {ID,端口名称}

我打开命令行并使用以下数据填充它:

1 23 abc

2 25 xyz

然后我正在开发一个使用JDBC bridge来获取结果的应用程序。我使用了以下startegy:

import java.sql.*;

public class SQLiteJDBC
{
  public static void main( String args[] )
  {

    Connection c = null;
    Statement stmt = null;
    try {
      Class.forName("org.sqlite.JDBC");
      c = DriverManager.getConnection("jdbc:sqlite:test.db");
      stmt = c.createStatement();
      ResultSet rs = stmt.executeQuery( "SELECT ID FROM SERVICE WHERE PORT=23;" );
      System.out.println(rs.getInt("ID"));
    }
    catch(Exception e){ }
   }
}

令我惊讶的是返回4作为结果但是当我在命令行上键入以下内容时,结果是1是正确的。 为什么结果有差异?

1 个答案:

答案 0 :(得分:2)

忘记了rs.first/rs.next

while (rs.next()) {
    System.out.println(rs.getInt("ID"));
}
rs.close();
stmt.close();
...
catch (Exception e) {
    e.printStacktrace();
}

通常人们甚至会期待一个SQLException,但显然没有发生(你有4个)。