我想将数据库记录存储到文本文件中。为此,我使用了ResultSet,我使用sql select查询选择了整个表,并将数据存储在ArrayList中。但是这段代码不能正常工作。我的数据库名称是test,table是employee。我该怎么办?这就是我的尝试。
import java.io.*;
import java.sql.*;
import java.util.*;
public class ResultSetWriteInToTextFile {
public static void main(String[] args) {
List data = new ArrayList();
try {
Connection con = null;
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("Select * from employee");
while (rs.next()) {
String id = rs.getString("emp_id");
String name = rs.getString("emp_name");
String address = rs.getString("emp_address");
String contactNo = rs.getString("contactNo");
data.add(id + " " + name + " " + address + " " + contactNo);
}
writeToFile(data, "Employee.txt");
rs.close();
st.close();
} catch (Exception e) {
System.out.println(e);
}
}
private static void writeToFile(java.util.List list, String path) {
BufferedWriter out = null;
try {
File file = new File(path);
out = new BufferedWriter(new FileWriter(file, true));
for (String s : list) {
out.write(s);
out.newLine();
}
out.close();
} catch (IOException e) {
}
}
}
答案 0 :(得分:3)
更改此行:
for (String s : list) {
到
for (Object s : list) {
答案 1 :(得分:0)
您无法使用(String s : data) {}
。你没有提到数据是一个字符串列表。将其声明为List<String> data = new ArrayList<String>();
。希望您使用的是Java 1.5或更高版本。
此外,您还需要提供绝对文件路径。
String path = "D:/Sample/Employee.txt" //whatever path you are using
File file = new File(path);
File parent_directory = file.getParentFile();
if (parent_directory != null) {
parent_directory.mkdirs();
}
答案 2 :(得分:0)
首先确保您的文件路径正确,并且所有目录都存在。
此外,您在writeToFile
中有一个try-catch语句。该方法在另一个try-catch语句中调用。在writeToFile
的函数声明中,尝试这样的事情:
private static void writeToFile(java.util.List list, String path) throws IOException`
然后您可以删除writeToFile
中的try-catch语句,就像抛出该异常一样,它由main方法中的try-catch处理。
如果这不起作用,请确保您的代码正确连接到数据库。
答案 3 :(得分:0)
不要使用原始类型!将List data = new ArrayList();
更改为
List<String> data = new ArrayList<String>();
并将writeToFile(java.util.List list, String path) {
更改为
writeToFile(java.util.List<String> list, String path) {