我在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模式的方式,所以我有一个控制器类之间。我可以写它也是必要的。
答案 0 :(得分:0)
正如@Ascalonian所说,你可以使用Map或HashMap。
例如:
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