【问题标题】:Write records into text file from database using java [closed]使用java将记录从数据库写入文本文件[关闭]
【发布时间】:2014-06-10 13:41:14
【问题描述】:

我想将数据库记录存储到文本文件中。为此,我使用了 ResultSet,我使用 sql select 查询选择了整个表,并将数据存储在 ArrayList 中。但是这段代码不能正常工作。我的数据库名称是测试,表是员工。我该怎么办?这是我尝试过的。

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) {
            }
    }

}

【问题讨论】:

  • 你为什么使用raw type?另外,哪个部分不能正常工作?有例外吗?你得到错误的输出吗?
  • “但是这段代码不能正常工作”是什么意思?
  • 我在编译的时候会出现异常
  • @JProgrammer 在(String s : list) 上吗?因为那是原始类型。
  • @elliott 哦!!!我该怎么办。你能纠正吗?请

标签: java mysql sql sql-server resultset


【解决方案1】:

改变这一行:

for (String s : list) {

for (Object s : list) {

【讨论】:

  • 我有。但现在在 out.write(s) 处出错;
  • 太棒了。将 out.write(s) 改为 out.write((String) s)
  • 哇!!!它正在工作。谢谢你fajarkoe
【解决方案2】:

您不能用于(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();
}

【讨论】:

  • 你确定???我试过这种方法。没有运行
  • 您是否包含了创建父文件夹的代码?还要确保您对您提供的路径具有写入权限。
  • @JProgrammer,已更新答案,指出另一个问题。
【解决方案3】:

不要使用原始类型!将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) {

【讨论】:

    【解决方案4】:

    首先确保你的文件路径正确,并且所有目录都存在。

    另外,writeToFile 中有一条 try-catch 语句。该方法在另一个 try-catch 语句中调用。在writeToFile 的函数声明中,尝试如下操作:

    private static void writeToFile(java.util.List list, String path) throws IOException`
    

    然后您可以删除writeToFile 中的try-catch 语句,就像抛出该异常一样,由main 方法中的try-catch 处理。

    如果这不起作用,请确保您的代码正确连接到数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多