easyui动态展示列_1
public Map<String,Object> sendSql(Map<String,String> shuruMap){
Map<String,Object> map = new HashMap<String, Object>();
Connection connection = null ;
List<Columns> headRows = new ArrayList<Columns>();
List<String> heads= new ArrayList<String>();
List<Map<String,String>> datas= new ArrayList<Map<String,String>>();
List<Map<String,String>> h = new ArrayList<Map<String,String>>();
JSONArray json = new JSONArray();
try {
String sql = shuruMap.get("sql");
connection = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
PreparedStatement prepareStatement = connection.prepareStatement(sql);
ResultSet resultSet = prepareStatement.executeQuery();
if(!map.containsKey("heads")){
heads = getHeads(resultSet.getMetaData(),headRows);
}
datas = getDatas(resultSet,heads);
map.put("rows", datas);
map.put("heads",headRows);
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
if(connection != null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return map;
}
private List<Map<String,String>> getDatas(ResultSet resultSet,List<String> heads) throws SQLException {
List<Map<String,String>> datas = new ArrayList<Map<String,String>>();
Map<String,String> data = null;
while(resultSet.next()){
data = new HashMap<String,String>();
for(String l : heads){
data.put(l,resultSet.getString(l));
}
datas.add(data);
}
return datas;
}
private List<String> getHeads(ResultSetMetaData metaData,List<Columns> headRows) throws SQLException {
List<String> heads = new ArrayList<String>();
for (int i = 1; i <= metaData.getColumnCount(); i++) {
Columns c = new Columns();
// 获得所有列的数目及实际列数
int columnCount = metaData.getColumnCount();
// 获得指定列的列名
String columnName = metaData.getColumnName(i);
// 获得指定列的列值
int columnType = metaData.getColumnType(i);
// 获得指定列的数据类型名
String columnTypeName = metaData.getColumnTypeName(i);
// 所在的Catalog名字
String catalogName = metaData.getCatalogName(i);
// 对应数据类型的类
String columnClassName = metaData.getColumnClassName(i);
// 在数据库中类型的最大字符个数
int columnDisplaySize = metaData.getColumnDisplaySize(i);
// 默认的列的标题
String columnLabel = metaData.getColumnLabel(i);
// 获得列的模式
String schemaName = metaData.getSchemaName(i);
// 某列类型的精确度(类型的长度)
int precision = metaData.getPrecision(i);
// 小数点后的位数
int scale = metaData.getScale(i);
// 获取某列对应的表名
String tableName = metaData.getTableName(i);
// 是否自动递增
boolean isAutoInctement = metaData.isAutoIncrement(i);
// 在数据库中是否为货币型
boolean isCurrency = metaData.isCurrency(i);
// 是否为空
int isNullable = metaData.isNullable(i);
// 是否为只读
boolean isReadOnly = metaData.isReadOnly(i);
// 能否出现在where中
boolean isSearchable = metaData.isSearchable(i);
c.setAlign("center");
c.setField(columnName);
c.setTitle(columnLabel);
c.setWidth(columnCount>500?"500":String.valueOf(columnCount));
heads.add(columnName);
// System.out.println(columnCount);
// System.out.println("获得列" + i + "的字段名称:" + columnName);
// System.out.println("获得列" + i + "的类型,返回SqlType中的编号:"+ columnType);
// System.out.println("获得列" + i + "的数据类型名:" + columnTypeName);
// System.out.println("获得列" + i + "所在的Catalog名字:"+ catalogName);
// System.out.println("获得列" + i + "对应数据类型的类:"+ columnClassName);
// System.out.println("获得列" + i + "在数据库中类型的最大字符个数:"+ columnDisplaySize);
// System.out.println("获得列" + i + "的默认的列的标题:" + columnLabel);
// System.out.println("获得列" + i + "的模式:" + schemaName);
// System.out.println("获得列" + i + "类型的精确度(类型的长度):" + precision);
// System.out.println("获得列" + i + "小数点后的位数:" + scale);
// System.out.println("获得列" + i + "对应的表名:" + tableName);
// System.out.println("获得列" + i + "是否自动递增:" + isAutoInctement);
// System.out.println("获得列" + i + "在数据库中是否为货币型:" + isCurrency);
// System.out.println("获得列" + i + "是否为空:" + isNullable);
// System.out.println("获得列" + i + "是否为只读:" + isReadOnly);
// System.out.println("获得列" + i + "能否出现在where中:"+ isSearchable);
headRows.add(c);
}
return heads;
}
浙公网安备 33010602011771号