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報錯"); }