使用Fillo如何读取所有行? - java

使用fillo,我已经设法使用fillo读取特定测试用例的数据。但是我有一个要求说需要一次执行多个测试用例。因此,根据需要读取所有行并存储在哈希映射中作为键值对。

向下,我将附加我编写的代码以读取特定的测试用例,并将其放在哈希图中。

public HashMap<String, String> extractexcelData(String TestcaseID, String sheetname) throws Exception
    {
        HashMap<String, String> excelhashmapvalues = new HashMap<String, String>();
        Connection connect = fillo.getConnection("src/test/resources/Datatable/MasterTestdata.xlsx");
        String query = " Select * from " + sheetname + " where TestcaseID='" + TestcaseID + "'";
        Recordset recordset = connect.executeQuery(query);
        while(recordset.next())
        {
            ArrayList<String> collection = recordset.getFieldNames();
            int size = collection.size();
            for (i = 0; i <=(size-1); i++) {
                String colname = collection.get(i);
                String colval = recordset.getField(colname);
                excelhashmapvalues.put(colname, colval);

            }

        }

        recordset.close();
        connect.close();
        return excelhashmapvalues;
    }

我的Excel格式是

使用Fillo如何读取所有行? - java

您可以看到正确的答案,我有8个测试用例,我需要阅读所有8个测试用例并将其放入hashmap中。需要帮助!

参考方案

您的问题是,当您处理下一个记录集时,您将覆盖映射中的值,因为您具有相同的列名。

解决方案可能是将您的数据保存在地图列表中:

List<Map<String, String>> listOfMaps = new ArrayList<>();
while(recordset.next()) {
    ArrayList<String> collection = recordset.getFieldNames();
    int size = collection.size();
    Map<String, String> values = new HashMap<>();
    for (i = 0; i <=(size-1); i++) {
        String colname = collection.get(i);
        String colval = recordset.getField(colname);
        values.put(colname, colval);
    }
    listOfMaps.add(values);
}

或按列名将其保留在值列表的映射中:

Map<String, List<String>> map = new HashMap<>();
while(recordset.next()) {
    ArrayList<String> collection = recordset.getFieldNames();
    int size = collection.size();
    for (i = 0; i <=(size-1); i++) {
        String colname = collection.get(i);
        String colval = recordset.getField(colname);
        map.computeIfAbsent(colname, k -> new ArrayList<>()).add(colval);
    }
}

Java:找到特定字符并获取子字符串 - java

我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…

Java中的“ <<”运算符 - java

最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…

Selenium Webdriver(Java)-查找禁用了属性=“”的元素 - java

我有<input id="test" disabled="">。如何找到具有属性disable =“”的元素。附言:在这种情况下,我不需要使用ID。我想找到一个具有禁用属性的元素。我尝试使用String enbl = Login.driver.findElement(By.cssSelector("…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…