1

我有一个方法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 文件。

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

4

2 回答 2

2

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

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

你应该使用这样的东西:

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

也改成StringStringBuffer提高性能。

于 2015-07-16T02:56:19.563 回答
0

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

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
...
于 2013-09-19T10:23:53.790 回答