【问题标题】:Writing the resultset to csv file将结果集写入 csv 文件
【发布时间】:2013-09-24 06:10:20
【问题描述】:

我有一个getstaffinfo方法,它有3个参数(var_1、connection、filewriter fw),var_1的值是从文本文件中读取的。因此,将根据从文本文件传递的所有 var_1 值多次调用该方法。大约(15000)

public static String getstaffid(String var_1, Connection connection,
        FileWriter fw) throws SQLException, Exception
// Create a statement
{
    String record = null;
    ResultSet rs = null;
    Statement stmt = connection.createStatement();
    boolean empty = true;
    try {
        rs = stmt
                .executeQuery("select username, firstname, lastname, middlename, street, city, stateorprovince, ziporpostalcode, countryorregion, fax, phone, extension, mobile, pager, title, primaryemail, secondaryemail, officename, description, comments, suspendeddate, userdata, employeeid, createuser, updateuser, createdate, updatedate, employeetype, servicedeskticketnumber, startdate, enddate, manager, businessapprover, technicalapprover, delegate, location, jobcodes, customproperty1, customproperty2, customproperty3, customproperty4, customproperty5, customproperty6, customproperty7, customproperty8, customproperty9, customproperty10 from globalusers where username = '"+ var_1 + "'");
        ResultSetMetaData metaData = rs.getMetaData();
        int columns = metaData.getColumnCount();
        ArrayList<String> records = new ArrayList<String>();

            while (rs.next()) {
            empty = false;

            //record = rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString(4) + " " + rs.getString(5) + " " + rs.getString(6) + " " + rs.getString(7) + " " + rs.getString(8) + " " + rs.getString(9) + " " + rs.getString(10) + " " + rs.getString(11) + " " + rs.getString(12) + " " + rs.getString(13) + " " + rs.getString(14) + " " + rs.getString(15) + " " + rs.getString(16) + " " + rs.getString(17) + " " + rs.getString(18) + " " + rs.getString(19) + " " + rs.getString(20) + " " + rs.getString(21) + " " + rs.getString(22) + " " + rs.getString(23) + " " + rs.getString(24) + " " + rs.getString(25) + " " + rs.getString(26) + " " + rs.getString(27) + " " + rs.getString(28) + " " + rs.getString(29) + " " + rs.getString(30) + " " + rs.getString(31) + " " + rs.getString(32) + " " + rs.getString(33) + " " + rs.getString(34) + " " + rs.getString(35) + " " + rs.getString(36) + " " + rs.getString(37) + " " + rs.getString(38) + " " + rs.getString(39) + " " + rs.getString(40) + " " + rs.getString(41) + " " + rs.getString(42) + " " + rs.getString(43) + " " + rs.getString(44) + " " + rs.getString(45) + " " + rs.getString(46) + " " + rs.getString(47);

            for (int i = 1; i <= columns; i++) {
                String value = rs.getString(i);
                records.add(value);
            }
            for (int j = 0; j < records.size(); j++) {
                 record = records.get(j) + ",";
            }
             fw.append(record);
            }
            /*fw.append(rs.getString(1));
            fw.append(',');
            fw.append(rs.getString(2));
            fw.append(',');
            fw.append(rs.getString(3));
            fw.append('\n'); */

            } finally {
        fw.flush();
        rs.close();
        stmt.close();
    }

    return record;
}

如您所见,正在执行 47 个值的查询,这些值可能为空,也可能有一些值。

然后我遍历这 47 列,获取值并将其存储到数组列表中。然后我迭代数组列表并使用逗号分隔值将所有值写入字符串记录。写入 csv 文件。

但它不能正常工作。任何意见将不胜感激...

【问题讨论】:

  • 你有堆栈跟踪吗?
  • for (int j = 0; i
  • 你好,是j
  • 你在那个循环中得到了 'i' 而不是 'j'。
  • 您需要更精确 - 任何关于“它无法正常工作”的详细信息?

标签: java arraylist resultset


【解决方案1】:

您可能已经解决了这个问题。只是让您知道我刚刚尝试使用您的代码并发现问题出在此处:

record = records.get(j) + ",";

你应该使用这样的东西:

record = record  + records.get(j) + ",";

还将String 更改为StringBuffer 将提高性能。

【讨论】:

    【解决方案2】:

    你没有写出你面临的确切问题,但肯定有一个问题:你从来没有在文件中写过换行符,所以所有数据都在一行中。

    while (rs.next()) {
    ... // your code, with the for loops
    
        fw.append(record); //writing out the line, from your code
        fw.append("\r\n"); //line break -- add this line
    } //this is the end of the "while(rs.next())" loop
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多