getConn = JdbcDataBaseUtil.getConnection(user,pwd,serverUrl,mysqDriver); //建立一个结果集,用来保存查询出来的结果 ResultSet rs = getConn.prepareStatement(sql).executeQuery(); ResultSetMetaData metaData = rs.getMetaData(); // 获得列的结果
//在写到利用数据库查询数据的时候,会用到的语句rs.last()和rs.beforeFirst(),这俩个方法会报错,原因是微软的SQL没有这个方法,需要额外添加语句。sqlserver
ResultSet rs = getConn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY).executeQuery();
int cols_len = metaData.getColumnCount(); // 获取总的列数 System.err.println("-------------------核心期刊-------------------------"); for (int i = 0; i < cols_len; i++) { String col_name = metaData.getColumnName(i + 1); // 获取第 i列的字段名称 System.err.println("核心期刊字段:"+col_name); }
//并不是所有的JDBC驱动都支持rs.last(),rs.getRow()方法的。
//比如微软的SQLServer驱动就不支持
rs.last();//最后一条数据
if(rs.getRow()==0){
System.out.println("数据库存储记录为空++++++++++++++++++++++");
}else {
standardTime=rs.getString("visitdate");//最后一条数据的时间字段数据
}
数据转成MAP
package com.rscode.dataanalysis.controller.hadooplog.system; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.rscode.dataanalysis.util.JdbcDataBaseUtil; /** * 资源管理系统 * @author tn * */ //@Component//对那些比较中立的类进行注释 @Controller @PropertySource({"classpath:database.properties","classpath:taskcron.properties"}) @Async public class ResourceManagerSystem { @Value("${resourceManager.userName}") private String user; @Value("${resourceManager.password}") private String pwd; @Value("${resourceManager.url}") private String serverUrl; @Value("${sqlserver.driver}") private String orclDriver; @Value("${resourceManager.tableLogSql}") private String Sql1; // @Scheduled(cron = "${task.system.credit.crontime}")//每分钟进行一次 0 * * * * ? @RequestMapping("/rmSystem") @ResponseBody public List<Map<String,Object>> rmSystem() { List<Map<String,Object>> results=new ArrayList<Map<String,Object>>(); Connection getConn=null; String sql = Sql1; try { getConn = JdbcDataBaseUtil.getConnection(user, pwd, serverUrl, orclDriver); //建立一个结果集,用来保存查询出来的结果 ResultSet rs = getConn.prepareStatement(sql).executeQuery(); ResultSetMetaData metaData = rs.getMetaData(); // 获得列的结果 List<String> colNameList=new ArrayList<String>(); int cols_len = metaData.getColumnCount(); // 获取总的列数 System.err.println("--------------------------------------------"); for (int i = 0; i < cols_len; i++) { String col_name = metaData.getColumnName(i + 1); // 获取第 i列的字段名称
String col_Tpye = metaData.getColumnTypeName(i+1);//类型
colNameList.add(metaData.getColumnName(i+1));
System.err.println("列名:"+col_name+"类型:"+col_Tpye); } while (rs.next()) {
System.err.println("资源管理系统数据===");
Map<String, Object> map=new HashMap<String, Object>();
for(int i=0;i<cols_len;i++){
String key=colNameList.get(i);
Object value=rs.getString(colNameList.get(i));
map.put(key, value);
}
results.add(map);
} } catch (SQLException e) { e.printStackTrace(); System.err.println("资源管理系统获取数据出错============="); } finally { JdbcDataBaseUtil.closeConnection(getConn);//释放资源 } return results; } }
MAP -JSON
//net.sf.json.JSONObject 将Map转换为JSON方法 JSONObject json = JSONObject.fromObject(map); //org.json.JSONObject 将Map转换为JSON方法 JSONObject json =new JSONObject(map);
String sendGet = HttpUtil.sendGet(requestUrl,"UTF-8");//sendGet多层的json字符串 System.err.println("sendGet:"+sendGet); //Json 字符串转对象 JSONObject jsonObj = new JSONObject(sendGet); //主要数据 try { String dataStr = jsonObj.getJSONArray("userlog").toString();//获取其中一层的数据 String dataStrSub = dataStr.substring(1,dataStr.length()-1);//去掉中括号 System.out.println(dataStrSub); Gson gson = new Gson(); map = gson.fromJson(dataStrSub, map.getClass()); //解析字符串-变map } catch (Exception e) { System.err.println("userlog为空,tostring报错"); }