JAVA:数据库结果集始终返回零行

JAVA:数据库结果集始终返回零行,java,database,Java,Database,我通过使用存根验证了驱动程序正在加载,并且正在建立连接。我的查询数据库的方法正在执行,没有错误,但返回了一个5列0行的空结果集,我通过调试进行了验证。测试数据库中有4条记录,共5列,我的查询要求返回所有结果。我可能只是累了。。。对我遗漏的东西有什么见解吗?下面是查询方法。数据库文件是access.mdb 公共数组列表结果 { ArrayList savedData=新的ArrayList; 语句stmt=null; ResultSet results=null try {

我通过使用存根验证了驱动程序正在加载,并且正在建立连接。我的查询数据库的方法正在执行,没有错误,但返回了一个5列0行的空结果集,我通过调试进行了验证。测试数据库中有4条记录,共5列,我的查询要求返回所有结果。我可能只是累了。。。对我遗漏的东西有什么见解吗?下面是查询方法。数据库文件是access.mdb

公共数组列表结果 { ArrayList savedData=新的ArrayList; 语句stmt=null; ResultSet results=null

    try
    {
        stmt = conn.createStatement();
        results = stmt.executeQuery(SELECT_ALL);
        while(results.next())
        {
            for(short i = 0; i < 5; i++)
            {
                savedData.add(results.getString(i));
            }
        }

    }
    catch(SQLException ex)
    {
        JOptionPane.showMessageDialog(null, ex.getMessage() + ": error during retrieval.");
    }
    finally
    {           
        try
        {
            results.close();
            stmt.close();
        } catch (SQLException e){}
    }

    return savedData;
}

您不应返回ResultSet。持久性类中不应包含Swing JOptionPane

试着这样做:

package persistence;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class JdbcDemo
{
    private static final String SELECT_SAVED_DATA = "select * from saveData";

    private Connection connection;

    public JdbcDemo(Connection connection)
    {
        this.connection = connection;
    }

    public List<String> getSavedData() throws SQLException
    {
        List<String> savedData = new ArrayList<String>();

        Statement stmt = null;
        ResultSet rs = null;
        try
        {
            stmt = this.connection.createStatement();
            rs = stmt.executeQuery(SELECT_SAVED_DATA);
            while (rs.next())
            {
                savedData.add(rs.getString(1)); // modify this as needed
            }
        }
        finally
        {
            DatabaseUtils.close(rs);
            DatabaseUtils.close(stmt);
        }

        return savedData;
    }
}

请仔细检查您使用的数据库是否正确。迭代结果集的代码看起来如何?whileresults.next{forshort i=0;i<5;i++{savedData.addresults.getStringi;}第一列有索引1,而不是0。我尝试了getStringi和getStringi+1。这并没有改变结果集有0行的事实。我仍然得到相同的结果集,返回5列0行。只是为了检查,我修改了查询以仅返回2列;然后结果集返回2列0行。如果您可以登录到数据库,我将丢失使用另一个客户端并查看行,则表明您没有连接到您认为是的数据库。检查您的连接URL,并确保您可以查看其他客户端的行。检查您的假设-当它们与您认为应该得到的不匹配时,它会说您在用错误的假设愚弄自己。连接wait’很好。我放弃了你发布的内容,重新开始,它起了作用。对我来说不太有意义。出于好奇,我再次尝试在返回时发送结果集,但仍然不起作用。我不明白。但我现在已经开始工作了,没有问题