【Jdbc】使用ResultSetMetaData类获得表的元数据(字段名、字段类型和长度)
jdbc虽然出现很多年了,但和SQL一样历久弥新,它的潜能还有待发掘。
下面是利用ResultSetMetaData类获得表的元数据(字段名、字段类型和长度)的程序,希望对大家有所帮助。
【目标表定义】
create table emp_from_10( id number(12), f1 nvarchar2(10), f2 nvarchar2(10), f3 nvarchar2(10), f4 nvarchar2(10), f5 nvarchar2(10), f6 nvarchar2(10), f7 nvarchar2(10), f8 nvarchar2(10), f9 nvarchar2(10) );
【得到表的元数据(字段名、字段类型和长度)的程序】
package com.hy.lab; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSetMetaData; /** * 表的元数据探测器 */ public class TableMetaProber { //-- 以下为连接Oracle数据库的四大参数 private static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; private static final String USER = "luna"; private static final String PSWD = "1234"; public void run(){ Connection conn = null; PreparedStatement pstmt = null; try{ String sql="select * from emp_from_10 where 1=2"; Class.forName(DRIVER); conn = DriverManager.getConnection(URL, USER, PSWD); conn.setAutoCommit(false); pstmt = conn.prepareStatement(sql); // 核心语句,取得查询的元数据 ResultSetMetaData rsmd=pstmt.executeQuery().getMetaData(); for(int i=0;i<rsmd.getColumnCount();i++){ int index=i+1; String columnName=rsmd.getColumnName(index); String columnType=rsmd.getColumnTypeName(index); int columnLength=rsmd.getColumnDisplaySize(index); String msg=String.format("columnName=%s,columnType=%s,columnLength=%d",columnName,columnType,columnLength); System.out.println(msg); } } catch (Exception e) { e.printStackTrace(); } finally { try { pstmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args){ TableMetaProber prober=new TableMetaProber(); prober.run(); } }
【输出】
columnName=ID,columnType=NUMBER,columnLength=13 columnName=F1,columnType=NVARCHAR2,columnLength=10 columnName=F2,columnType=NVARCHAR2,columnLength=10 columnName=F3,columnType=NVARCHAR2,columnLength=10 columnName=F4,columnType=NVARCHAR2,columnLength=10 columnName=F5,columnType=NVARCHAR2,columnLength=10 columnName=F6,columnType=NVARCHAR2,columnLength=10 columnName=F7,columnType=NVARCHAR2,columnLength=10 columnName=F8,columnType=NVARCHAR2,columnLength=10 columnName=F9,columnType=NVARCHAR2,columnLength=10
【结语】
利用上面的信息,稍微组合一下,就可以创建同构新表了。
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2020-03-17 实验:模糊查询会使普通索引失效吗?
2020-03-17 位图索引对单表查询效率的影响(使用解释计划评估)
2020-03-17 查看加在一张表上的索引
2020-03-17 用解释计划评估创建索引后对单表查询效率的影响
2019-03-17 【Canvas与游戏】空战游戏1.18