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缓存文 ...
随机推荐
- String(char[] value, boolean share) {
记录一下今天被蠢到 1. 在观察StringBuffer类的toString方法时,发现了个没见过的方法 return new String(toStringCache, true); @Overri ...
- 升级sudo版本
1.查看sudo版本 sudo -V 2.下载sudo最新安装文件 sudo官方地址: https://www.sudo.ws/ 下载地址:https://www.sudo.ws/dist/ 3.解压 ...
- PyTorch固定参数
In situation of finetuning, parameters in backbone network need to be frozen. To achieve this target ...
- The art of multipropcessor programming 读书笔记-硬件基础1
本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以 ...
- .Net Core 获取上下文HttpContext
1.先定义一个类 using Microsoft.AspNetCore.Http; namespace BCode.Util { public class MvcContext { public st ...
- dev分支和release是什么
master(主分支) 存在一条主分支(master).所有用户可见的正式版本,都从master发布(也是用于部署生产环境的分支,确保master分支稳定性).主分支作为稳定的唯一代码库,不做任何开发 ...
- SpringBoot-MVC自动配置原理
SpringBoot对SpringMVC做了哪些配置,如何扩展,如何定制? 文档地址 :https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/re ...
- NX Open 图层说
我也是偶然发现的,在一次调试下,竟然会报警. 所以我写了测试代码,进行测试:结果如下 纳尼???还有271层?还能设置大于256层?NX open可以的.
- 更好的 java 重试框架 sisyphus 的 3 种使用方式
回顾 我们前面学习了 更好的 java 重试框架 sisyphus 入门简介 更好的 java 重试框架 sisyphus 配置的 2 种方式介绍 更好的 java 重试框架 sisyphus 背后的 ...
- 【二食堂】Beta - Scrum Meeting 1
Scrum Meeting 1 例会时间:5.13 18:30~18:50 进度情况 组员 当前进度 今日任务 李健 1. 查阅资料,解决划词勾选和右键菜单的问题issue2. 修复了Alpha阶段的 ...