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报错");
}

JDBC ---获取数据字段 -- 转成map的更多相关文章

  1. sql server 获取数据字段(表的字段和类型信息)

    获取数据字段(表的字段和类型信息) SELECT 表名= then d.name else '' end, 表说明= then isnull(f.value,'') else '' end, 字段序号 ...

  2. jdbc获取数据具体过程

    下面是个最简单的使用jdbc取得数据的应用.在例子之后我将分成4步,分别是①取得连接,②创建PreparedStatement,③设置参数,④执行查询,来分步分析这个过程.除了设置参数那一步之外,其他 ...

  3. 【Spring Boot】使用JDBC 获取相关的数据

    使用JDBC 获取相关的数据 什么是JDBC Java Database Connectivity 是一种用于执行SQL语句的Java API,与数据库建立连接.发送 操作数据库的语句并处理结果. S ...

  4. 表id关联数据获取至页面,制作下拉框多选进行数据多项获取(字段处理)

     这周完成了一张表单,重点碰到以下问题: 1.freemaker获取年份的type值取year,类型直接为Long,传至后台和获取数据不需要转换: 2.freemaker获取日期type值为date, ...

  5. 使用 Qt 获取 UDP 数据并显示成图片(2)

    本文首发于 BriFuture 的 个人博客 在我的前一篇文章 使用 Qt 获取 UDP 数据并显示成图片 中,我讲了如何用 Python 模拟发送数据,如何在 Qt 中高效的接收 UDP 数据包并将 ...

  6. 使用 Qt 获取 UDP 数据并显示成图片

    一个项目,要接收 UDP 数据包,解析并获取其中的数据,主要根据解析出来的行号和序号将数据拼接起来,然后将拼接起来的数据(最重要的数据是 R.G.B 三个通道的像素值)显示在窗口中.考虑到每秒钟要接收 ...

  7. Java之通过接口获取数据并用JDBC存储到数据库中

    最近做数据同步功能,从接口获取数据然后存到数据库中以便后续对数据进行相关操作,下面就贴一下相关代码. import com.alibaba.fastjson.JSON; import com.alib ...

  8. resultset 对象获取行字段数据时报:java.sql.SQLException: Column 'id' not found.

    resultset 对象获取行字段数据时报:java.sql.SQLException: Column 'id' not found. 代码: String sql="SELECT d.co ...

  9. sql 根据指定条件获取一个字段批量获取数据插入另外一张表字段中+MD5加密

    /****** Object: StoredProcedure [dbo].[getSplitValue] Script Date: 03/13/2014 13:58:12 ******/ SET A ...

随机推荐

  1. ldap 集成harbor

    harbor: 1.6 默认配置文件在harbor.cfg,我们可以先不添加配置,直接在harbor web界面进行配置(harbor 1.6 如果db 启动失败提示postgresql 数据目录已存 ...

  2. Numpy中的广播原则(机制)

    为了了解这个原则,首先我们来看一组例子: # 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除这个数. In [12]: import numpy as np In [13]: ...

  3. Linux下Shell的for循环语句

    第一类:数字性循环-----------------------------for1-1.sh #!/bin/bash ;i<=;i++)); do + ); done ------------ ...

  4. loj2353. 「NOI2007」 货币兑换

    loj2353. 「NOI2007」 货币兑换 链接 https://loj.ac/problem/2353 思路 题目不重要,重要的是最后一句话 提示 输入文件可能很大,请采用快速的读入方式. 必然 ...

  5. [codechef]SnackDown 2017 Online Elimination Round Prefix XOR

    预处理后主席树维护 首先得出最后的答案为 \(\sum_{i=l}^{r}{min(right[i],r)-i+1}\) \(ri[i]\)表示i最远的上升序列(即代码中的f[i]) step1 那么 ...

  6. redis 配置初体验

    下载redis 1.新增start.bat 编辑redis-server redis.windows.conf 2..改动redis.windows.conf配置文件改动password:找到例如以下 ...

  7. loadrunner中面向目标场景的设计

    在一个面向目标的方案中,可以定义五种类型的目标:虚拟用户数.每秒点击次数(仅 Web Vuser).每秒事务数.每分钟页面数(仅 Web Vuser)或方案的事务响应时间.使用“编辑方案目标”对话框可 ...

  8. Linux下修改用户的UID、GID

    01.用户的UID和GID不能被占用 [root@26 ~]# id mvpuid=503(mvp) gid=503(mvp) groups=503(mvp) ###假定我需要设置mvp的uid/gi ...

  9. obs studio 使用

    专业,开源,无广告,免费,录屏/推流神器--obs studio 稍微简单的也有captura, 原理:调用本地API获取音频流,图像流(全屏幕,单个windows窗口的图像输出)->开源音视频 ...

  10. MySQL中的decimal

    MySQL DECIMAL数据类型用于在数据库中存储精确的数值.我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据. 要定义数据类型为DECIMAL的列,请使用以下语法: ...