无法获取SQL结果以写入Java文件
标题说明了一切。这是我的结果集代码:无法获取SQL结果以写入Java文件,java,sql,Java,Sql,标题说明了一切。这是我的结果集代码: try { while (rs.next()) { int ID = rs.getInt("ID"); String Name = rs.getString("Name"); String CountryCode = rs.getString("CountryCode"); String District = rs.getString("District"); int
try {
while (rs.next()) {
int ID = rs.getInt("ID");
String Name = rs.getString("Name");
String CountryCode = rs.getString("CountryCode");
String District = rs.getString("District");
int Population = rs.getInt("Population");
//Display values
try {
writeToFile(ID, Name, CountryCode, District, Population);
} catch (IOException e) {
e.printStackTrace();
}
}
这是我的writeToFile方法:
public void writeToFile(int id, String name, String countryCode, String district, int population) throws IOException {
FileWriter fw = new FileWriter("C:\\Users\\horry\\Desktop\\results.txt");
fw.write(id + " " + name + " " + countryCode + " " + district + " " + population + "\n");
try {
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我尝试了通常的冲洗和关闭方法,但缺少了一些东西。是否应将filewriter声明为elsewgere?尝试使用append选项打开文件
FileWriter fw = new FileWriter("C:\\Users\\horry\\Desktop\\results.txt", true);
要在任何平台(如linux)中添加新行,请使用通用行分隔符,如下所示
fw.write(id + " " + name + " " + countryCode + " " + district + " " + population + System.getProperty("line.separator"));
您正在为结果集的每个迭代打开一个新的FileWriter。默认情况下,FileWriter在文件开头写入。因此,您正在不断地覆盖您在上一次迭代中在文件中写入的内容 此外,我建议不要在每次迭代中创建新的FileWriter。我只会打开一个文件编写器一次,然后对所有的文件使用同一个文件编写器 然后,使用BufferedWriter而不是纯FileWriter。速度会快得多 另外,在finally块中关闭writer,而不是在try中。自Java7以来,您甚至可以对资源使用try 最后,使用br.newLine;写新行而不是自己管理\n 请检查下面的代码
File f = new File("C:\\Users\\horry\\Desktop\\results.txt");
try (BufferedWriter bw = new BufferedWriter(new FileWriter(f))) {
while (rs.next()) {
int id = rs.getInt("ID");
String name = rs.getString("Name");
String countryCode = rs.getString("CountryCode");
String district = rs.getString("District");
int population = rs.getInt("Population");
bw.write(id + " " + name + " " + countryCode + " " + district + " " + population);
bw.newLine();
}
}
没有例外。一行被写入,但ID不正确。您知道更好的方法吗?您可以使用调试器或日志来查看是否正在填充名称、countryCode等变量,或者编写一个测试用例来传递这些参数的硬编码值吗?这在我的文件现在已填充的情况下起作用。有没有关于为每个查询创建新行的想法?为每个查询更新新行,如果有效,请接受答案