gpt4 book ai didi

mysql - 为什么使用 ResultSet 时会得到一个额外的结果为 null?

转载 作者:行者123 更新时间:2023-11-29 18:54:23 25 4
gpt4 key购买 nike

我在这里想做的是从 MySQL 数据库读取一些数据,并将它们转换为对象数据并将其序列化到文件中。显然,确实如此。但我在控制台中得到一个空值,我无法理解它来自哪里。如果我检查错误本身,它会在这一行显示:

pepi = (personita) ois.readObject();

您得到的输出是:

Betty,Laferez,87.0 <- 来自数据库,好的。

马诺洛,洛佩兹,45.0 <- 来自数据库,好的。

曼努埃尔·罗德里格斯,12.0 <- 来自数据库,好的。

帕特里夏,阿隆索,12.0 <- 来自数据库,好的。

<- ???

那么,您能帮我理解为什么这一行会导致空问题吗?

public class practicabdyserializableobjetos {
public static void main(String[] args) throws ClassNotFoundException, IOException {
Class.forName("com.mysql.jdbc.Driver");
Connection conexion = null;

try {
conexion = DriverManager.getConnection("jdbc:mysql://localhost/programacion", "root", "password");
Statement sentencia = (Statement) conexion.createStatement();
ResultSet resultado = sentencia.executeQuery("Select * from ejemplo");

File persofiles = new File("./persofiles.txt");
if (!persofiles.exists())
persofiles.createNewFile();

FileOutputStream fioust = new FileOutputStream(persofiles);
ObjectOutputStream oboust = new ObjectOutputStream(fioust);
int p=0;
while (resultado.next()) {
personita per = new personita();
per.setNombre(resultado.getString(1));
per.setApellido(resultado.getString(2));
per.setEdad(resultado.getDouble(3));
oboust.writeObject(per);
}

oboust.close();
fioust.close();

FileInputStream fis = new FileInputStream(persofiles);
@SuppressWarnings("resource")
ObjectInputStream ois = new ObjectInputStream(fis);

while (true) {
personita pepi = new personita();
pepi = (personita) ois.readObject();
System.out.println(pepi.getNombre() + ", " + pepi.getApellido() + ", " + pepi.getEdad());
}

} catch (SQLException e) {
e.printStackTrace();
}
catch(EOFException e){
System.out.println(e.getMessage());
}

}

}

最佳答案

编辑 2 - 我更改了答案

读完这篇文章后Question

您的代码是正确的。您得到的 null 是 EOFException 捕获内的 e.getMessage(),您可以通过用“;”替换 System.println 语句来简单地避免它。

}catch(EOFException e){
;
}

与我认为的相反,您不会在流的末尾读取空值,因此要知道何时到达流的末尾,您可以使用此 EOFException。在我提到的问题中,需要考虑一下,因为您可以知道 EOF 引发是因为没有更多对象要读取,还是因为出现错误并且流已关闭。

关于mysql - 为什么使用 ResultSet 时会得到一个额外的结果为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44217803/

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