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缓存文 ...
随机推荐
- node ***.js或npm run scripts的脚本命令出现Cannot find module 'react-dev-utils/getPublicUrlOrPath'报错的解决办法
出现类似Cannot find module 'react-dev-utils/getPublicUrlOrPath'一般是项目中没有下载报错中提到的模块(可以在项目中package.json文件de ...
- 深入思考软件工程,开启 DevOps 之旅
20 世纪 60 年代,软件开始脱离硬件,逐渐成为一个独立产业.至今,软件开发过程从瀑布模型.CMM/CMMI,到 20 年前敏捷的诞生,再到今天 DevOps 的火热,一代代软件人在思考和探索,如何 ...
- C#开发BIMFACE系列47 IIS部署并加载离线数据包
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前两篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>与<C#开发BIMFACE系 ...
- 2021.1.28--vj补题
B - B CodeForces - 994B 题内容: Unlike Knights of a Round Table, Knights of a Polygonal Table deprived ...
- Java(4)运算符及表达式
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201675.html 博客主页:https://www.cnblogs.com/testero ...
- Java(7)流程控制语句中的for、while、do while循环
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201543.html 博客主页:https://www.cnblogs.com/testero ...
- LuckySheet一款在线Excel使用心得
1.LuckySheet简介 Luckysheet ,是一款国产的纯JS实现的类似excel的在线表格,功能强大.配置简单.完全开源. 开源地址 https://gitee.com/mengshuke ...
- 记一个非常诡异的关于 shared_ptr 的 bug
问题描述 今天写项目的时候遇见一个特别诡异的 bug,体现在在执行某条语句时,程序会莫名崩溃,并且给出的错误信息也非常难懂,只有一个malloc(): invalid size (unsorted)错 ...
- FastAPI 学习之路(二十八)使用密码和 Bearer 的简单 OAuth2
OAuth2 规定在使用(我们打算用的)「password 流程」时,客户端/用户必须将 username 和 password 字段作为表单数据发送.我们看下在我们应该去如何实现呢. 我们写一个登录 ...
- Java基础之原生JDBC操作数据库
前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...