2013-09-19 3 views
0

Я пытаюсь написать ResultSet в файл CSV, используя следующий код,Письменный набор результатов в CSV

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(); 


      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); 
      fw.append(rs.getString(1)); 
      fw.append(','); 
      fw.append(rs.getString(2)); 
      fw.append(','); 
      fw.append(rs.getString(3)); 
      fw.append('\n'); 
      } 
      System.out.println(record); 
     } 
     finally { 
     fw.flush(); 
     rs.close(); 
     stmt.close(); 
    } 

    return record; 
} 

Это отлично работает. Но для получения строковой записи мне пришлось написать что-то вроде record = rs.getString (1) + "" + ........ + "" + rs.getString (47). Если, например, сказать завтра, если запрос запроса для большего количества атрибутов, я должен добавить больше rs.getString (48) и так далее.

Так я написал функцию как ниже,

for (int i = 1; i <= columns; i++) { 
       record = rs.getString(i) + " "; 
        } 

где значение столбцов,

ResultSetMetaData metaData = rs.getMetaData(); 
    int columns = metaData.getColumnCount(); 

Но теперь я просто получить

нуля нуля . . . null.

Также вместо добавления fw.append (rs.getString (1)) ..... fw.append (rs.getSting (n)), есть ли небольшая функция, которую я могу написать, чтобы не добавлять больше этих добавить.

Большое спасибо

+2

Вместо того, чтобы писать его самостоятельно, используйте OpenCSV –

+0

Это среда прода, я могу использовать только стандартные JDK 1.6 и не могу экспортировать любую библиотеку третьей стороны для выполнения это. – navman

+0

@navman вы пишете цикл for вне цикла while? – SpringLearner

ответ

0

Исправлено. Благодарю. Для кого-то, кто мог привыкнуть с ним, прилагает код

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(); 


      while (rs.next()) 
      { 
       empty = false; 
       for (int i = 1; i <= columns; i++) 
       { 
       record = rs.getString(i); 
       fw.append(rs.getString(i)); 
       fw.append(','); 
       } 
       fw.append('\n'); 

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

    return record; 
}   
Смежные вопросы