2015-02-04 3 views
0

Я работаю с java в eclipse. Я пытаюсь взять 2 переменные из своей базы данных и записать их в excel.My только проблема возвращает 2 разных значения (целое число и строку) из db читайте метод и отправляйте его в метод excel writer, который находится в разных классах. Вот мой читатель дб класс:возвращает 2 разных значения

public class DbConnection { 
public void createConnection(String choice) { 
    try { 
     String myDriver = "com.mysql.jdbc.Driver"; 
     String db = "jdbc:mysql://localhost/digiturkschema"; 
     Class.forName(myDriver); 
     Connection conn = DriverManager.getConnection(db, "root", 
       "*****"); 
     Statement st = conn.createStatement(); 
     switch (choice) { 
     case "write": 
      ResultSet rs = st.executeQuery("SELECT * FROM channelstable"); 
      while (rs.next()) { 
       int channelId = rs.getInt("channelNo"); 
       String channelName = rs.getString("channelName"); 
      } 
     } 
    } catch (Exception exception) { 
     System.out.print(exception.getStackTrace()); 
    } 
} 
} 

Мне нужно вернуть «channelId» и «Channelname» от этого метода к этому методу:

public class WritingToExcel { 
public void Write() throws IOException { 
    try { 
     JFileChooser f = new JFileChooser(); 
     f.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
     f.showSaveDialog(null); 

     System.out.println(f.getCurrentDirectory()); 
     System.out.println(f.getSelectedFile()); 
     String direction = f.getSelectedFile().toString() + "\\DigiTurkKanalListesi.xls"; 

     WritableWorkbook workbook = Workbook.createWorkbook(new File(direction)); 
     WritableSheet sheet = workbook.createSheet("Kanal Listesi", 0); 

     Label label = new Label(0, 0, "A label record"); 
     sheet.addCell(label); 

     Number number = new Number(2, 1, 3.1459); 
     sheet.addCell(number); 

     workbook.write(); 
     workbook.close(); 
    } catch (WriteException e) { 
     e.getStackTrace(); 
    } 
}} 

Я знаю, что writingToExcel класс не завершен, и это хорошо, я могу закончить его, если я могу взять эти две переменные в этот класс. Так я использую шаблон MVC, поэтому у меня есть класс контроллера между ними. Я могу написать его, если это необходимо.

+0

Является ли 'channelId' всегда уникальным? Если это так, вы можете сохранить их в «Map » и передать это. – Ascalonian

+0

Да, это уникально и pk таблицы. Я буду искать с помощью карты <>. Спасибо за вашу идею :) –

+1

Если заказ не имеет значения, используйте 'HashMap'. Если заказ имеет значение, используйте 'LinkedHashMap'. Карта - это сочетание значений ключа. Таким образом, ваш ключ будет каналом, и значение будет channelName. – Ascalonian

ответ

0

Как сказал @ Аскалон, вы можете использовать Map или HashMap.

, например:

Map<Integer, String> channelInfo = new HashMap<Integer, String>(); 

Вы также можете (но не должен):

Создайте новый класс со значениями, которые необходимо и вернуть этот класс. (Вы будете делать дополнительную работу, которой вам действительно не нужно.)

Создайте методы настройки для этих переменных и используйте их перед вызовом метода для записи в excel. (Требует осторожности, как вы можете в конечном итоге с нежелательными значениями, если вам беспорядок код)

0

Есть несколько вариантов

  • ArrayList<Objects>: Во время Итерируя Resultset подготовить временный список сказать TempList вставки элементов в tempList, а затем после каждой итерации добавить tempList до Главный список, Since ArrayList является последовательным списком. Таким образом, порядок вставки и извлечения одинаковый. Таким образом, вы можете вернуть это из вашего dbReader() метод .then использовать их везде, где вы хотите

Ваш Список_массивов будет выглядеть следующим образом

[ [1,Channel 1] , [2,Channel 2] , [3,Channel 3] ] 
  • Map если важен порядок предпочитают LinkedHashMap если заказ не является вашей основной задачей, тогда выберите HashMap

 Смежные вопросы

  • Нет связанных вопросов^_^