有没有办法解析列名而不是定义它们?

时间:2014-06-13 17:08:54

标签: java excel selenium jdbc

使用Java/Selenium/Excel张我有一个自动化脚本。在验证数据库中的信息时,我正在做这样的事情:

//Get values from Excel.  Excel user will specify what table and what user
String table=currentTestSuiteXLS.getCellData(currentTestCaseName, "table",currentTestDataSetID);
String user=currentTestSuiteXLS.getCellData(currentTestCaseName, "user",currentTestDataSetID);

//Run query
 PreparedStatement pstmt1 = conn.prepareStatement("SELECT * FROM " + table +" WHERE User = '" + user + "' ORDER BY 1 DESC LIMIT 1;"); 


if(table.equals("A")){ 
        rs1.next();
                //Get results from A table
                String db_TableAColumn1=rs1.getString("TableAColumn1");
                String db_TableAColumn2=rs1.getString("TableAColumn2");
                String db_TableAColumn3=rs1.getString("TableAColumn3");
                //Get values from excel
                String excel_TableAColumn1=currentTestSuiteXLS.getCellData(currentTestCaseName, "TableAColumn1",currentTestDataSetID);  
                String excel_TableAColumn2=currentTestSuiteXLS.getCellData(currentTestCaseName, "TableAColumn2",currentTestDataSetID);  
                String excel_TableAColumn3=currentTestSuiteXLS.getCellData(currentTestCaseName, "TableAColumn3",currentTestDataSetID);  

                    if(db_TableAColumn1.equals(excel_TableAColumnA)) { ...
                    if(db_TableAColumn2.equals(excel_TableAColumn2)) { ... 
                    if(db_TableAColumn3.equals(excel_TableAColumn3)) { ...


if(table.equals("B")){ 
        rs1.next();
                //Get results from B table
                String db_TableBColumn1=rs1.getString("TableBColumn1");
                String db_TableBColumn2=rs1.getString("TableBColumn2");
                String db_TableBColumn3=rs1.getString("TableBColumn3");
                //Get values from excel
                String excel_TableBColumn1=currentTestSuiteXLS.getCellData(currentTestCaseName, "TableBColumn1",currentTestDataSetID);  
                String excel_TableBColumn2=currentTestSuiteXLS.getCellData(currentTestCaseName, "TableBColumn2",currentTestDataSetID);  
                String excel_TableBColumn3=currentTestSuiteXLS.getCellData(currentTestCaseName, "TableBColumn3",currentTestDataSetID);  

                    if(db_TableBColumn1.equals(excel_TableBColumn1)) { ...
                    if(db_TableBColumn2.equals(excel_TableBColumn2)) { ... 
                    if(db_TableBColumn3.equals(excel_TableBColumn3)) { ...

所以目前这个工作正常。但是,它的可扩展性不高。

  • 如果我们想要开始检查A表上的新列(或者是否添加了新列),我们需要更新java代码。我们只想修改excel表。有没有办法解析结果集中的所有列,如果列在Excel表格中,那么我们检查它是否存在于结果集中,如果是,那么检查预期值是否匹配?

有没有办法为表格中的每一栏

String GiveAName = rs1.getString(1);直到所有列都被赋予名称

然后,如果excel中指定的每个列都有一个值,则匹配。

而不是定义如下所有内容:

String db_TableAColumn1=rs1.getString("TableAColumn1");

String db_TableAColumn1= rs1.getString(1);

感谢。

1 个答案:

答案 0 :(得分:0)

使用ResultSetMetaData http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html

它允许您动态检索表的列名。

示例:

      ResultSetMetaData md = rs.getMetaData();
      int columns = md.getColumnCount();
      while (rs.next()){
         for(int i=1; i<=columns; ++i){           
             System.out.println("Column name: " + md.getColumnName(i) + " Col Value: " +rs.getObject(i));
         }
      }