oracle 连接数据库并查询,返回List<Map<String, Object>> 数据
package JDBC; import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class OracleJdbcTest {
//数据库连接对象
private static Connection conn = null; private static String driver = "oracle.jdbc.OracleDriver";//"oracle.jdbc.driver.OracleDriver"; //驱动 private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; //连接字符串 private static String username = "******"; //用户名 private static String password = "******"; //密码 // 获得连接对象
private static synchronized Connection getConn(){
if(conn == null){
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
} //执行查询语句
public void query(String sql, boolean isSelect) throws SQLException{
PreparedStatement pstmt; try {
pstmt = getConn().prepareStatement(sql);
//建立一个结果集,用来保存查询出来的结果
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String name = rs.getString("bm_mc");
System.out.println(name);
}
rs.close();
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
} private static String clob2String(Clob clob) throws Exception {
return (clob != null ? clob.getSubString(1, (int) clob.length()) : null);
} private static List<Map<String, Object>> ResultSetToList(ResultSet rs) throws Exception {
ResultSetMetaData md = rs.getMetaData(); // 得到结果集的结构信息,比如字段数、字段名等
// .getMetaData().getTableName(1) 就可以返回表名
int columnCount = md.getColumnCount(); // 得到结果集的列数
// System.out.println(columnCount);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> rowData;
while (rs.next()) { //记录指针向下移动一个位置,如果其指向一条有效记录,则返回真;否则返回假。只有使记录指针不断移动,才能不断取出数据库中的数据 rowData = new HashMap<String, Object>(columnCount);
for (int i = 1; i <= columnCount; i++) {
Object v = rs.getObject(i); // 将任何数据类型返回为 Java Object
if (v != null && (v.getClass() == Date.class || v.getClass() == java.sql.Date.class)) { // 反射
Timestamp ts = rs.getTimestamp(i); // 返回时间和日期 java.sql.Timestamp
//rs.getDate()只是返回日期部分 java.sql.Date
//rs.getTime()只是返回时间部分 java.sql.Time
v = new java.util.Date(ts.getTime());
// v = ts;
} else if (v != null && v.getClass() == Clob.class) {
v = clob2String((Clob) v); // oracle11g 遇到取出来的字段是clob类型,clob用来存储大量文本数据
}
//System.out.println("ResultSetToList:"+md.getColumnLabel(i));
// rowData.put(camelName(md.getColumnLabel(i)), v==null?"":v);
rowData.put(md.getColumnLabel(i).toLowerCase(), v == null ? "" : v);
//getColumnName(int column):获取指定列的名称
//getColumnLabel(int column):获取用于打印输出和显示的指定列的建议标题。
// toUpperCase 的意思是将所有的英文字符转换为大写字母
// toLowerCase的意思是将所有的英文字符转换为小写字母
}
list.add(rowData);
}
return list;
} //执行查询语句
public List<Map<String, Object>> queryList(String sql, boolean isSelect) throws Exception{
PreparedStatement pstmt = getConn().prepareStatement(sql);;
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//建立一个结果集,用来保存查询出来的结果
ResultSet rs = pstmt.executeQuery();
list = ResultSetToList(rs);
rs.close();
pstmt.close();
return list;
} public void query(String sql) throws SQLException{
PreparedStatement pstmt;
pstmt = getConn().prepareStatement(sql);
pstmt.execute();
pstmt.close();
} //关闭连接
public void close(){
try {
getConn().close(); } catch (SQLException e) {
e.printStackTrace();
}
} }
...
package JDBC; import java.sql.SQLException;
import java.util.List;
import java.util.Map; public class ConnOracle {
public static void main(String[] args) throws Exception {
OracleJdbcTest test = new OracleJdbcTest();
try {
test.query("drop table student");
} catch (SQLException e) {} //test.query("create table student(id int, name nchar(20))"); //test.query("insert into student values(1,'zhangsan')"); //test.query("insert into student values(2,'lisi')"); //test.query("select r.id from T_ry r", true); String sql = "select r.* from T_RY r where r.data_flag <> 'D' ";
List<Map<String, Object>> list = test.queryList(sql, true);
System.out.println(list);
test.close();
}
}
oracle 连接数据库并查询,返回List<Map<String, Object>> 数据的更多相关文章
- 使用 JDBC 和 JavaTemplate 查询SQL语句返回 List<Map<String,Object>>
使用JDBC执行sql语句返回List 类型: public class JdbcUtil { private static Log log = LogFactory.getLog(JdbcUtil. ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
- jpa返回List<Map<String, Object>>相当于jdbctemplate的queryForlist
public class Test(){ @PersistenceContext(unitName = "manageFactory") protected EntityManag ...
- MyBatis 返回Map<String,Object>类型
<!-- 导出所有数据 --> <select id="exportAll" resultMap="map"> SELECT t1.ME ...
- Mybatis 遍历 List<Map<String,Object>>
在上一篇博客中总结了MyBatis Plus 实现多表分页模糊查询(链接在最后).返回类型是编写一个专门的vo类.这次是返回List < Map > 前言 编写一个专门的vo返回类,主 ...
- List<Map<String, Object>>相关
2016年8月6日13:53:00 --------------------------- List<Map<String, Object>> List集合新增列 则需要: L ...
- POST 发送HTTP请求入参为:String url, Map<String, Object> propsMap
/** * 发送HTTP请求 * * @param url * @param propsMap * 发送的参数 */ public static String httpSend(String url, ...
- JAVA中对List<map<String,Object>>根据map某个key值进行排序
方法compareTo()比较此对象与指定对象的顺序.如果该对象小于.等于或大于指定对象,则分别返回负整数.零或正整数.返回整数,1,-1,0:返回1表示大于,返回-1表示小于,返回0表示相等. 普通 ...
- List<Map<String, Object>> 与 json 互转
近期做指纹识别,需要用到缓存文件,数据量并不大,用redis不合适,所以用到了txt文件. 思路是 1.定时查询指纹,存到txt缓存文件中. 2.新增或删除指纹时,查询指纹,存到txt缓存文 ...
随机推荐
- fastjson将json转为Map<String,String>踩坑
字符串 对于一个json字符串 String str = "{"specItem":"[红, 大]","specName":&qu ...
- 记一次 .NET 某纺织工厂 MES系统 API 挂死分析
一:背景 1. 讲故事 这个月中旬,有位朋友加我wx求助他的程序线程占有率很高,寻求如何解决,截图如下: 说实话,和不同行业的程序员聊天还是蛮有意思的,广交朋友,也能扩大自己的圈子,朋友说他因为这个b ...
- HTML选择器的四种使用方法
选择器<style> 为了让.html代码更加简洁,这里引入选择器style 本文总共介绍选择器的四种使用方式 一.选择器的四种形式 1.ID选择器 id表示身份,在页面元素中的id不允许 ...
- JS返回一个字符串中长度最小的单词的长度
题目:编写一个方法,返回字符串中最小长度的单词的长度. var str = 'What a good day today!'; 1 //方法一 2 function returnString1(str ...
- Http Only Cookie保护AccessToken
前言 JWT认证方式目前已被广泛使用,一直以来我们将token放在请求头中的Authorization中,若通过此种方式,一旦token被恶意窃取,攻击者可肆意对用户可访问资源进行任意索取,我们大多都 ...
- 11.4.1 LVS-DR
Virtual Server via Direct Routing(VS-DR): 用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此方法,控制管理的计算机接 ...
- C# datagridview、datagrid、GridControl增加行号
01 - WinForm中datagridview增加行号 在界面上拖一个控件dataGridView1,在datagridview添加行事件中添加如下代码: private void dataGri ...
- 初探JavaScript PDF blob转换为Word docx方法
PDF转WORD为什么是历史难题 PDF 转Word 是一个非常非常普遍的需求,可谓人人忌危,为什么如此普遍的需求,却如此难行呢,还得看为什么会有这样的一个需求: PDF文档遵循iOS32000的规范 ...
- flask 之 请求钩子
请求钩子 什么是请求钩子? 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要统一处理,为了让每个视图函数避免编写重复功能的代码,flask提供了统一的接口可以添加这些处理函数,即请求钩子. f ...
- [对对子队]会议记录4.10(Scrum Meeting 1)
本次每日例会的开会时间是4月10日晚上20:00,使用腾讯会议作为开会工具. 今天已完成的工作 何瑞 工作内容:制作UI界面的指令编辑系统,已大致实现指令的衔接 相关issue:实现用户指令编 ...