Java 执行executeQuery时,结果集始终为空

Java 执行executeQuery时,结果集始终为空,java,jdbc,Java,Jdbc,我目前正在编写一个简单的Java应用程序,它从XLS文件中读取信息,然后将其输入数据库。因为XLS确实有重复的记录,所以我只需检查XLS文件中的条目是否已经存在于数据库中。这是我的密码: public static void addResult(ArrayList<ArrayList<String>> listResults) { try { openDatabase(); stmt = c.createStatement(

我目前正在编写一个简单的Java应用程序,它从XLS文件中读取信息,然后将其输入数据库。因为XLS确实有重复的记录,所以我只需检查XLS文件中的条目是否已经存在于数据库中。这是我的密码:

public static void addResult(ArrayList<ArrayList<String>> listResults)
{
    try
    {
        openDatabase();
        stmt = c.createStatement();

        for (int i = 0; i < listResults.size(); i++)
        {
            PreparedStatement stm = c.prepareStatement("SELECT player_name FROM results WHERE player_name=?;");
            stm.setString(1, listResults.get(i).get(ReadResultsFile.NAME));
            System.out.println(stm);
            ResultSet rs = stm.executeQuery();

            if (rs.getRow() <= 0)
            {
                String typeOfPlay = new String();

                if (listResults.get(i).get(ReadResultsFile.TYPE).equals("Simple"))
                {
                    typeOfPlay = "single";
                }
                else if (listResults.get(i).get(ReadResultsFile.TYPE).equals("Double"))
                {
                    typeOfPlay = "double";
                }

                stm = c.prepareStatement("INSERT INTO results (player_name, school_id, " +  typeOfPlay + ", tournament_id) "
                        + "VALUES(?,?,?,?);");

                stm.setString(1, listResults.get(i).get(ReadResultsFile.NAME));
                stm.setString(2, listResults.get(i).get(ReadResultsFile.SCHOOL_ID));
                stm.setInt(3, Integer.parseInt(listResults.get(i).get(ReadResultsFile.SCORE)));
                stm.setString(4, "1");
                stm.executeUpdate();
            }
            else
            {
                String typeOfPlay = new String();

                if (listResults.get(i).get(ReadResultsFile.TYPE).equals("Simple"))
                {
                    typeOfPlay = "single";
                }
                else if (listResults.get(i).get(ReadResultsFile.TYPE).equals("Double"))
                {
                    typeOfPlay = "double";
                }

                stm = c.prepareStatement("UPDATE results SET " + typeOfPlay + "=? WHERE player_name=?;");

                stm.setString(1, typeOfPlay);
                stm.setString(2, listResults.get(i).get(ReadResultsFile.SCORE));
                stm.setString(1, listResults.get(i).get(ReadResultsFile.NAME));
                System.out.println(stm);
                stm.executeUpdate();
            }
        }

        closeDatabase();
    }
    catch (Exception e)
    {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }
}
公共静态void addResult(ArrayList listResults)
{
尝试
{
openDatabase();
stmt=c.createStatement();
对于(int i=0;i如果(rs.getRow()getRow将无法按照javadocs工作

检索当前行号。第一行是数字1,第二行是数字2,依此类推

结果集光标最初位于第一行之前;结果集光标 对方法next的第一次调用使第一行成为当前行

常用

while (rs.next ()) {....

getRow将不会按照javadocs工作

检索当前行号。第一行是数字1,第二行是数字2,依此类推

结果集光标最初位于第一行之前;结果集光标 对方法next的第一次调用使第一行成为当前行

常用

while (rs.next ()) {....

确保
listrests.get(i).get(ReadResultsFile.NAME)
没有任何尾随空格。事实上,我会插入一个字符串并将其打印出来。我认为这也不相关,但sql中的
不需要确保
listrests.get(i).get(ReadResultsFile.NAME)
没有任何尾随空格。事实上,我会插入一个字符串并将其打印出来。我认为也不相关,但sql中的
不需要非常感谢先生!非常感谢先生!