gpt4 book ai didi

java - 执行executeQuery时结果集始终为空

转载 作者:行者123 更新时间:2023-12-01 21:14:54 30 4
gpt4 key购买 nike

我目前正在编写一个简单的 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);
}
}

出现的问题是 rs.getRow() 函数始终返回 -1。我尝试直接在数据库工具中运行 SELECT 查询,如果已经存在类似的条目,则查询将返回player_name 列。不幸的是,它在 Java 中也做了同样的事情。

我现在不确定该怎么做。

感谢您的任何提示!

最佳答案

getRow 将无法按照 javadocs 工作

Retrieves the current row number. The first row is number 1, the second number 2, and so on.

A ResultSet cursor is initially positioned before the first row; the first call to the method next makes the first row the current row

通常使用

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

关于java - 执行executeQuery时结果集始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40416436/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com