返回2个不同的值

时间:2015-02-04 17:45:00

标签: java return

我在eclipse中使用java。我正在尝试从我的数据库中获取2个变量并将其写入excel。我唯一的问题是从db reader方法返回2个不同的值(一个整数和一个字符串)并发送它是excel在不同类中的编写器方法。 这是我的数据库读者类:

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

我知道writeToExcel类没有完成,没关系,我可以完成它,如果我可以把这两个变量带到这个类。通过我使用MVC模式的方式,所以我有一个控制器类之间。我可以写它也是必要的。

2 个答案:

答案 0 :(得分:0)

正如@Ascalonian所说,你可以使用MapHashMap

例如:

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

您也可以(但不应该):

使用您需要的值创建一个新类并返回该类。 (你将完成额外的工作而你真的不需要。)

为这些变量创建setter方法,并在调用写入excel的方法之前使用它。 (需要注意的是,如果弄乱代码,最终可能会出现不需要的值)

答案 1 :(得分:0)

有多种选择

  • ArrayList<Objects>:在迭代过程中 resultSet 准备临时列表说 tempList 将项目插入 tempList ,然后在每次迭代后添加< strong> tempList 到主列表,因为 ArrayList 是一个顺序列表。因此,插入和检索顺序是相同的。所以你可以从 dbReader()方法返回它。然后在任何你想要的地方使用它们

您的Arraylist将如下所示

[ [1,Channel 1] , [2,Channel 2] , [3,Channel 3] ]
  • Map如果订单很重要,请选择LinkedHashMap如果订单不是您的主要关注点,请选择HashMap