现在从数据库中取出所有的索引,因为是oracle,用DatabaseMetaData的getIndexInfo方法。比如说 第6(索引名)、8(序列号)、9(列名称),联合索引第6列相同的,第8、9都不一样。我目前把联合索引取出来,得到一个ResultSet对象 ,而这个ResultSet不是每个索引一行数据,而是每个索引的每个字段一行。
现在我的问题是:如何循环将同是一个索引的不同字段(也就是索引名相同而,序列号和列名称不同)取出来放在一个list里。也就是如何判断两行ResultSet是同一个联合索引的字段不知道说清楚了没,谢谢了
现在我的问题是:如何循环将同是一个索引的不同字段(也就是索引名相同而,序列号和列名称不同)取出来放在一个list里。也就是如何判断两行ResultSet是同一个联合索引的字段不知道说清楚了没,谢谢了
解决方案 »
- struts2集成fckeditor 复制出问题
- Hibernate 映射中的集合,查询时怎么控制集合数据量
- 求一通用的方法把 从oracle库里查出的集合以Excel格式导出。
- struts1.0标签和JS问题
- jsp连接sql的动态连接池问题
- Alfresco 作文当服务器的性能问题
- 大连晟峰中天招应届本科毕业生为赴日软件工程师情况如何?
- Hibernate新手问题:将string类型的映射为hbm文件的id时,应该使用哪种<generator class=> ??而使得在添加操作时可以给出要添加的值?
- 关于程序使用邮箱验证的问题
- 如何运行JAVA???????????
- document.url和location.href的区别
- Struts2的小问题
加入说有3个索引 其中2个是联合索引,分别关联了2个字段
这样的话rs里就是5行记录但是实际上 我只要3个index 对象就好了Index index = new Index();
while (rs.next()) {
index.setName(rsgetString(9));
请您帮忙的区域
********
//把索引对象放入list
indexList.add(index);
}
我的实现:
public class SimpleHashList
{
private Map<String, List<Object>> dataMap = new HashMap<String, List<Object>>();
public void put(String key, Object value)
{
List<Object> valList = dataMap.get(key);
if (valList == null)
{
valList = new ArrayList<Object>();
}
valList.add(value);
dataMap.put(valList); }
public List<Object> get(String key)
{
return dataMap.get(key);
} public Map<String, List<Object>> getDataMap()
{ return dataMap;
}}然后在你的代码里面,用这个实现对关键字进行分组Index index = new Index();
SimpleHashList hashList = new SimpleHashList();
while (rs.next()) {
index.setName(rsgetString(9));
请您帮忙的区域
****
// 获取索引名称
String key = rs.getString(6);****
//把索引对象放入时限类
hashList.put(key, index);
}
最后 获取这个存储数据的MAP 进行迭代就可以了。
String INDEX_NAME = indexResultSet.getString("INDEX_NAME");
index.setName(INDEX_NAME );
index.setMColumnStr(COLUMN_NAME);
System.out.println("COLUMN_NAME="+COLUMN_NAME);
hashList.put(INDEX_NAME, index);
}
aMap =hashList.getDataMap();
Iterator keys=aMap.keySet().iterator();
while (keys.hasNext()) {
String indexName = (String) keys.next();
System.out.println("indexName="+indexName);
List<Index> indexList=aMap.get(indexName);
for (int i = 0; i < indexList.size(); i++) {
Index index1 = indexList.get(i);
//if(i==index1.getSeq())
System.out.println("字段名="+index1.getMColumnStr());
}
}打印输出是COLUMN_NAME=SEQ
COLUMN_NAME=SHORT_NAME
COLUMN_NAME=ROLE_ID
COLUMN_NAME=LEVELS
COLUMN_NAME=ROLE_ID
COLUMN_NAME=ROLE_CODEindexName=ONE_INDEX_CARROT
字段名=ROLE_CODE
indexName=UNION_INDEX_CARO
字段名=ROLE_CODE
字段名=ROLE_CODE
字段名=ROLE_CODE
indexName=UNION_INDEX_CARROT
字段名=ROLE_CODE
字段名=ROLE_CODE字段输入的时候还是正确的,输出就全一样了
你的目的不就是筛选这个相同的INDEX_NAME吗?但是
如果映射以前包含了一个该键的映射关系,则旧值就会被替换,所以你只是放进去了最后一个