JDBC ---獲取數據字段 -- 轉成map


      

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM