【Java】JDBC 获取数据库表名、字段名、注释 Comment 等信息

这篇具有很好参考价值的文章主要介绍了【Java】JDBC 获取数据库表名、字段名、注释 Comment 等信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:给定数据库信息和表名,扫描表的字段名、字段类型和注释。

要使用Java JDBC获取数据库表名、字段名和注释信息,你需要连接到数据库并执行适当的SQL查询。以下是一些示例代码,展示如何获取这些信息。请注意,这些示例代码假定你已经建立了数据库连接。你需要根据你的数据库类型和连接方式进行适当的修改。

注:数据库可以是Oracle、Mysql、DB2、SqlServer等。

解决方法:利用JDBC的DatabaseMetaData来获取数据库的元信息。

用法如下:

package util;
 
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
 

public class DbInfoUtil {
	
	/**
	 * 根据数据库的连接参数,获取指定表的基本信息:字段名、字段类型、字段注释
	 * @param driver 数据库连接驱动
	 * @param url 数据库连接url
	 * @param user	数据库登陆用户名
	 * @param pwd 数据库登陆密码
	 * @param table	表名
	 * @return Map集合
	 */
	public static List getTableInfo(String driver,String url,String user,String pwd,String table){
		List result = new ArrayList();
		
		Connection conn = null;		
		DatabaseMetaData dbmd = null;
		
		try {
			conn = getConnections(driver,url,user,pwd);
			
			dbmd = conn.getMetaData();
			ResultSet resultSet = dbmd.getTables(null, "%", table, new String[] { "TABLE" });
			
			while (resultSet.next()) {
		    	String tableName=resultSet.getString("TABLE_NAME");
		    	System.out.println(tableName);
		    	
		    	if(tableName.equals(table)){
		    		ResultSet rs = conn.getMetaData().getColumns(null, getSchema(conn),tableName.toUpperCase(), "%");
 
		    		while(rs.next()){
		    			//System.out.println("字段名:"+rs.getString("COLUMN_NAME")+"--字段注释:"+rs.getString("REMARKS")+"--字段数据类型:"+rs.getString("TYPE_NAME"));
		    			Map map = new HashMap();
		    			String colName = rs.getString("COLUMN_NAME");
		    			map.put("code", colName);
		    			
		    			String remarks = rs.getString("REMARKS");
		    			if(remarks == null || remarks.equals("")){
		    				remarks = colName;
		    			}
		    			map.put("name",remarks);
		    			
		    			String dbType = rs.getString("TYPE_NAME");
		    			map.put("dbType",dbType);
		    			
		    			map.put("valueType", changeDbType(dbType));
		    			result.add(map);
		    		}
		    	}
		    }
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return result;
	}
	
	private static String changeDbType(String dbType) {
		dbType = dbType.toUpperCase();
		switch(dbType){
			case "VARCHAR":
			case "VARCHAR2":
			case "CHAR":
				return "1";
			case "NUMBER":
			case "DECIMAL":
				return "4";
			case "INT":
			case "SMALLINT":
			case "INTEGER":
				return "2";
			case "BIGINT":
				return "6";
			case "DATETIME":
			case "TIMESTAMP":
			case "DATE":
				return "7";
			default:
				return "1";
		}
	}
 
	//获取连接
	private static Connection getConnections(String driver,String url,String user,String pwd) throws Exception {
		Connection conn = null;
		try {
			Properties props = new Properties();
			props.put("remarksReporting", "true");
			props.put("user", user);
			props.put("password", pwd);
			Class.forName(driver);
			conn = DriverManager.getConnection(url, props);
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}
		return conn;
	}
	
	//其他数据库不需要这个方法 oracle和db2需要
	private static String getSchema(Connection conn) throws Exception {
		String schema;
		schema = conn.getMetaData().getUserName();
		if ((schema == null) || (schema.length() == 0)) {
			throw new Exception("ORACLE数据库模式不允许为空");
		}
		return schema.toUpperCase().toString();
 
	}
 

执行main测试函数:

	public static void main(String[] args) {
		
		//这里是Oracle连接方法
		
		String driver = "oracle.jdbc.driver.OracleDriver";
		String url = "jdbc:oracle:thin:@192.168.11.11:1521:orcl";
		String user = "bdc";
		String pwd = "bdc123";
		//String table = "FZ_USER_T";
		String table = "FZ_USER_T";
		
		//mysql
		/*
		String driver = "com.mysql.jdbc.Driver";
		String user = "root";
		String pwd = "123456";
		String url = "jdbc:mysql://localhost/onlinexam"
				+ "?useUnicode=true&characterEncoding=UTF-8";
		String table = "oe_student";
		*/
		
		List list = getTableInfo(driver,url,user,pwd,table);
		System.out.println(list);
	}
	
}

注意:获取注释信息的可移植性有限,因为不同的数据库管理系统可能以不同的方式存储注释。有些数据库可能不会存储列注释。在这种情况下,你可能需要查阅数据库文档,了解如何获取列注释信息。

确保将代码中的数据库连接部分替换为你实际使用的数据库连接方式。此外,确保在使用JDBC之前,你已经引入了适当的数据库驱动程序。

此工具类无需修改,适用于Oracle、Mysql、DB2、SqlServer数据库。文章来源地址https://www.toymoban.com/news/detail-783769.html

到了这里,关于【Java】JDBC 获取数据库表名、字段名、注释 Comment 等信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JDBC详解(二):获取数据库连接(超详解)

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! ⭕ java.sql.Driver 接口是 所有 JDBC 驱动程序需要实现的接口 。这个接口是提供给数据库厂商使用的,

    2023年04月27日
    浏览(42)
  • 【如何获取数据库表的字段并拼接】

    在写sql语句时,我要获取到该表的大部门字段来做处理,一个个粘贴复制太费事了,所以我决定执行sql语句把表中字段查询出来 其中 test 是表名, school 是数据库名字,这样能把该数据库中某表的所有字段查询出来 因为我要做查询,需要逗号拼接,所以,对sql语句进行了修改

    2024年02月10日
    浏览(52)
  • <JDBC> 获取数据库连接的五种方式:你真的get到了吗?

    ❤写在前面 ❤博客主页: 努力的小鳴人 ❤系列专栏: JDBC ❤欢迎小伙伴们, 点赞👍关注🔎收藏🍔 一起学习! ❤如有错误的地方,还请小伙伴们指正!🌹 JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义

    2023年04月08日
    浏览(62)
  • 通过JDBC连接数据库并用Java把数据写入数据库

    目录 1.新建项目 2.在src包下新建lib包,用来存放jar包(下载对应jar包复制到lib包里) 3.右键导入的jar包,找到并单击\\\"添加到库\\\"(add....) 4.在src包下新建bean包,新建class类 5.class类中写数据库表中对应的列名的set get方法、空参、有参(String方法)注意:类名为私有类(private),新建类时数

    2024年02月02日
    浏览(68)
  • 【数据库】Java的JDBC编程(idea链接数据库)

    目录 前言 1、Java的数据库编程:JDBC    2、使用JDBC(项目中导入数据库驱动包) 2.1、获取驱动包 2.2、将数据库驱动包导入Java项目中 2.3、使用JDBC编写代码 2.3.1、创建并初始化一个数据源 2.3.2、 和数据库服务器建立链接 2.3.3、构建SQL语句  2.3.4、执行SQL语句  2.3.4、释放资源

    2024年02月02日
    浏览(50)
  • JDBC --- Java的数据库编程

    目录 🍈一、数据库编程的必备条件 🍉二、什么是 JDBC JDBC 的优势 🍊三、JDBC 使用流程 以及 常用接口和类的讲解 🍡0. 前置工作 🍭1. 引入依赖 🍬2. 数据库连接Connection 🍬3. 创建操作命令 Statement 🍫4. 使用操作命令来执行 SQL 🧁5. 处理结果集 ResultSet 🍰6. 释放资源 🎂完整

    2024年02月09日
    浏览(61)
  • JAVA连接数据库 JDBC编程

    提供修改数据库和查询数据库的代码,两者只有很细微的差别         注意在进行连接数据库首先你得下载你对应MYSQL版本的JDBC驱动包,比如MYSQL8.0版本的你就要下载MYSQL8.0版本的JDBC驱动包,MYSQL5.1版本的你就要下载MYSQL5.1版本的JDBC驱动包 我下载的8.0版本的驱动包就是这个

    2024年02月15日
    浏览(60)
  • 查看Oracle_表名、字段名、注释、进程及杀进程等常用语句

    -- 查看ORACLE 数据库中本用户下的所有表 SELECT table_name FROM user_tables; -- 查看ORACLE 数据库中所有用户下的所有表 select user,table_name from all_tables; -- 查看ORACLE 数据库中本用户下的所有列 select table_name,column_name from user_tab_columns; -- 查看ORACLE 数据库中本用户下的所有列 select user,tabl

    2024年02月09日
    浏览(44)
  • 【JDBC】Java连接MySQL数据库

    数据库编程指的是通过编程语言与数据库进行交互和操作的过程,包括使用编程语言创建、连接、查询、更新和删除数据库中的数据,以及管理数据库结构和其他相关工作等。 另外,不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包

    2024年02月15日
    浏览(141)
  • Java-JDBC连接数据库

    目录 一、JDBC开发步骤 1.Java程序连接数据库 1.1引入MySQL驱动包 1.2Java连接MySQL步骤 2 实现增删改查操作 2.1 添加数据 2.2 修改数据 2.3 删除数据 2.4 查询数据 二、JDBC处理相关问题 1 解决SQL注入问题 1.1、问题演示 1.2、解决问题 2 JDBC事务处理 3 获取自增长键值 4 批处理操作 1.1 引入

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包