在这种情况下如何动态地将Column Name赋予ResultSet?

时间:2014-11-20 10:12:10

标签: java

我有一个ArrayList,如下所示

  import java.util.ArrayList;

public class Mann {

    public static void main(String args[]) {

        ArrayList<String> billOrderList = new ArrayList<String>();

        list.add("VAT");
        list.add("Discount");
        list.add("SERVICE CHARGE");

        StringBuilder select_query = new StringBuilder();
        select_query.append("Select ");

        for (int i = 0; i < billOrderList.size(); i++) {

            if (i != billOrderList.size() - 1) {
                select_query.append("" + billOrderList.get(i) + " , ");
            } else {
                select_query.append("" + billOrderList.get(i) + "");
            }
        }

        select_query.append(" From VENDOR_ITEMS WHERE vendor_items_id = "
                + vendor_item + "");

        VendorItems_Pstmt = dbConnection.prepareStatement(select_query
                .toString());
        VendorItems_RSet = VendorItems_Pstmt.executeQuery();
        while (VendorItems_RSet.next()) {

            String tax_name = VendorItems_RSet.getString();
        }
    }

}

如何在这种情况下给出VendorItems_RSet.getString()中的动态列名???

3 个答案:

答案 0 :(得分:1)

ResultSetMetaData resultSetMetaData = VendorItems_RSet.getMetaData();
        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {            
            String type = resultSetMetaData.getColumnTypeName(i);  // Get Column type 
            String name= resultSetMetaData.getColumnName(i);   //Column name
    }
}

答案 1 :(得分:1)

您需要ResultSetMetaData来获取与您的查询结果相关联的列名称 您可以使用ResultSet.getMetaDateResultSetMetaData获取ResultSet,您可以迭代它并获取列所有列名称。

ResultSetMetaData  VendorItems_RSet_metaData = VendorItems_RSet.getMetaData(); 
int numberOfColumns = VendorItems_RSet_metaData .getColumnCount(); 
for(int i=1;i<=numberOfColumns;i++)
{   
   String columnName = VendorItems_RSet_metaData.getColumnName(i);
}

我认为您需要所有列数据,因为您可以像

那样迭代循环
while (VendorItems_RSet.next()) 
{
  for(int i=1;i<=numberOfColumns;i++)
  {   
     String columnName = VendorItems_RSet_metaData.getColumnName(i);
     String tax_name = VendorItems_RSet.getString(columnName);
     System.out.println(tax_name); 
  }         
}

答案 2 :(得分:0)

SELECT *然后

ResultSetMetaData metaData = VendorItems_RSet.getMetaData();
int columns = metaData.getColumnCount();
for (int i = 1; i <= columns; ++i) {
    System.out.println(metaData.getColumnName(1));
}