使用java将记录写入数据库的文本文件中

时间:2014-06-10 13:41:14

标签: java mysql sql sql-server resultset

我想将数据库记录存储到文本文件中。为此,我使用了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) {
            }
    }

}

4 个答案:

答案 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) {