JavaMySQL只返回一行

JavaMySQL只返回一行,java,mysql,jdbc,Java,Mysql,Jdbc,我有以下代码: try { Integer user = InformationService.authenticate(username, password, connection); Statement st = connection.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM tasks WHERE uid = " + user + " ORDER BY title ASC");

我有以下代码:

try {
    Integer user = InformationService.authenticate(username, password, connection);
    Statement st = connection.createStatement();
    ResultSet rs = st.executeQuery("SELECT * FROM tasks WHERE uid = " + user + " ORDER BY title ASC");
    System.out.println("SELECT * FROM tasks WHERE uid = " + user + " ORDER BY title ASC");
    while (rs.next()) {
        Task p = new Task(rs.getString("title"), rs.getInt("id"), rs.getString("descriere"),
                rs.getString("data"), rs.getInt("uid"), rs.getString("data_creare"), rs.getString("ora"),
                rs.getInt("status"), rs.getString("priority"), rs.getInt("sters"), rs.getInt("id_parinte"),
                rs.getInt("notify"), rs.getString("assigner"), rs.getInt("durata"), rs.getInt("project_id"));
        System.out.println(p);
        tasks.add(p);
    }
问题是它只返回第一行,如果我手动运行查询,会得到更多的结果(总共16个)。以下是输出:

SELECT * FROM tasks WHERE uid = 4 ORDER BY title ASC
models.Task@164b9b8f

知道为什么会发生这种情况吗?

可能是因为您可以对代码进行如下改进,这将帮助您快速识别问题

int rowCount = 0;

try {
    Integer user = InformationService.authenticate(username, password, connection);
    Statement st = connection.createStatement();
    String query = "SELECT * FROM tasks WHERE uid = " + user + " ORDER BY title ASC";
    System.out.println(query);
    ResultSet rs = st.executeQuery(query);

    while (rs.next()) {
        Task p = new Task(rs.getString("title"), rs.getInt("id"), rs.getString("descriere"),
            rs.getString("data"), rs.getInt("uid"), rs.getString("data_creare"), rs.getString("ora"),
            rs.getInt("status"), rs.getString("priority"), rs.getInt("sters"), rs.getInt("id_parinte"),
            rs.getInt("notify"), rs.getString("assigner"), rs.getInt("durata"), rs.getInt("project_id"));

        rowCount++;
        System.out.println(rowCount + "." + p);
        tasks.add(p);
    }
} finally {
    System.out.println("Number of records = " + rowCount);
}

在这种方法中,您可以清楚地识别迭代了多少行。

手动运行时得到的结果计数是多少,如果您粘贴一些数据,我们将不胜感激。通常,我们保留uidunique@JqueryLearner问题是它没有返回所有的行。当您手动运行并通过代码运行时,数据库是否相同?我的意思是,在这两种情况下,您是否连接到同一个数据库和服务器?是的,数据库是相同的。应该有16个手帕。实际上,这帮助我发现我没有在捕获中打印e.printStackTrace()