有没有办法parsing出列名而不是定义它们?

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

 //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表格。 有没有办法parsing结果集中的所有列,如果一个列在Excel表中,那么我们检查它是否存在于结果集中,如果是,那么检查预期值是否匹配?

有没有办法做到这一点对于表中的每一列

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

那么如果在excel中指定的每一列都有一个值,就匹配起来。

而不是像所有的定义:

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

要么

 String db_TableAColumn1= rs1.getString(1); 

谢谢。

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

它将允许您dynamic检索表的列名称。

例:

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