国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java】JDBC 獲取數(shù)據(jù)庫表名、字段名、注釋 Comment 等信息

這篇具有很好參考價值的文章主要介紹了【Java】JDBC 獲取數(shù)據(jù)庫表名、字段名、注釋 Comment 等信息。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

需求:給定數(shù)據(jù)庫信息和表名,掃描表的字段名、字段類型和注釋。

要使用Java JDBC獲取數(shù)據(jù)庫表名、字段名和注釋信息,你需要連接到數(shù)據(jù)庫并執(zhí)行適當(dāng)?shù)腟QL查詢。以下是一些示例代碼,展示如何獲取這些信息。請注意,這些示例代碼假定你已經(jīng)建立了數(shù)據(jù)庫連接。你需要根據(jù)你的數(shù)據(jù)庫類型和連接方式進(jìn)行適當(dāng)?shù)男薷摹?/p>

注:數(shù)據(jù)庫可以是Oracle、Mysql、DB2、SqlServer等。

解決方法:利用JDBC的DatabaseMetaData來獲取數(shù)據(jù)庫的元信息。

用法如下:

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 {
	
	/**
	 * 根據(jù)數(shù)據(jù)庫的連接參數(shù),獲取指定表的基本信息:字段名、字段類型、字段注釋
	 * @param driver 數(shù)據(jù)庫連接驅(qū)動
	 * @param url 數(shù)據(jù)庫連接url
	 * @param user	數(shù)據(jù)庫登陸用戶名
	 * @param pwd 數(shù)據(jù)庫登陸密碼
	 * @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")+"--字段數(shù)據(jù)類型:"+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;
	}
	
	//其他數(shù)據(jù)庫不需要這個方法 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數(shù)據(jù)庫模式不允許為空");
		}
		return schema.toUpperCase().toString();
 
	}
 

執(zhí)行main測試函數(shù):

	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);
	}
	
}

注意:獲取注釋信息的可移植性有限,因為不同的數(shù)據(jù)庫管理系統(tǒng)可能以不同的方式存儲注釋。有些數(shù)據(jù)庫可能不會存儲列注釋。在這種情況下,你可能需要查閱數(shù)據(jù)庫文檔,了解如何獲取列注釋信息。

確保將代碼中的數(shù)據(jù)庫連接部分替換為你實際使用的數(shù)據(jù)庫連接方式。此外,確保在使用JDBC之前,你已經(jīng)引入了適當(dāng)?shù)臄?shù)據(jù)庫驅(qū)動程序。

此工具類無需修改,適用于Oracle、Mysql、DB2、SqlServer數(shù)據(jù)庫。文章來源地址http://www.zghlxwxcb.cn/news/detail-783769.html

到了這里,關(guān)于【Java】JDBC 獲取數(shù)據(jù)庫表名、字段名、注釋 Comment 等信息的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JDBC詳解(二):獲取數(shù)據(jù)庫連接(超詳解)

    JDBC詳解(二):獲取數(shù)據(jù)庫連接(超詳解)

    本博主將用CSDN記錄軟件開發(fā)求學(xué)之路上親身所得與所學(xué)的心得與知識,有興趣的小伙伴可以關(guān)注博主!也許一個人獨行,可以走的很快,但是一群人結(jié)伴而行,才能走的更遠(yuǎn)! ? java.sql.Driver 接口是 所有 JDBC 驅(qū)動程序需要實現(xiàn)的接口 。這個接口是提供給數(shù)據(jù)庫廠商使用的,

    2023年04月27日
    瀏覽(20)
  • 【如何獲取數(shù)據(jù)庫表的字段并拼接】

    在寫sql語句時,我要獲取到該表的大部門字段來做處理,一個個粘貼復(fù)制太費(fèi)事了,所以我決定執(zhí)行sql語句把表中字段查詢出來 其中 test 是表名, school 是數(shù)據(jù)庫名字,這樣能把該數(shù)據(jù)庫中某表的所有字段查詢出來 因為我要做查詢,需要逗號拼接,所以,對sql語句進(jìn)行了修改

    2024年02月10日
    瀏覽(18)
  • <JDBC> 獲取數(shù)據(jù)庫連接的五種方式:你真的get到了嗎?

    <JDBC> 獲取數(shù)據(jù)庫連接的五種方式:你真的get到了嗎?

    ?寫在前面 ?博客主頁: 努力的小鳴人 ?系列專欄: JDBC ?歡迎小伙伴們, 點贊??關(guān)注??收藏?? 一起學(xué)習(xí)! ?如有錯誤的地方,還請小伙伴們指正!?? JDBC(Java Database Connectivity)是一個獨立于特定數(shù)據(jù)庫管理系統(tǒng)、通用的SQL數(shù)據(jù)庫存取和操作的公共接口(一組API),定義

    2023年04月08日
    瀏覽(20)
  • 通過JDBC連接數(shù)據(jù)庫并用Java把數(shù)據(jù)寫入數(shù)據(jù)庫

    通過JDBC連接數(shù)據(jù)庫并用Java把數(shù)據(jù)寫入數(shù)據(jù)庫

    目錄 1.新建項目 2.在src包下新建lib包,用來存放jar包(下載對應(yīng)jar包復(fù)制到lib包里) 3.右鍵導(dǎo)入的jar包,找到并單擊\\\"添加到庫\\\"(add....) 4.在src包下新建bean包,新建class類 5.class類中寫數(shù)據(jù)庫表中對應(yīng)的列名的set get方法、空參、有參(String方法)注意:類名為私有類(private),新建類時數(shù)

    2024年02月02日
    瀏覽(98)
  • 【數(shù)據(jù)庫】Java的JDBC編程(idea鏈接數(shù)據(jù)庫)

    【數(shù)據(jù)庫】Java的JDBC編程(idea鏈接數(shù)據(jù)庫)

    目錄 前言 1、Java的數(shù)據(jù)庫編程:JDBC?? ?2、使用JDBC(項目中導(dǎo)入數(shù)據(jù)庫驅(qū)動包) 2.1、獲取驅(qū)動包 2.2、將數(shù)據(jù)庫驅(qū)動包導(dǎo)入Java項目中 2.3、使用JDBC編寫代碼 2.3.1、創(chuàng)建并初始化一個數(shù)據(jù)源 2.3.2、 和數(shù)據(jù)庫服務(wù)器建立鏈接 2.3.3、構(gòu)建SQL語句? 2.3.4、執(zhí)行SQL語句? 2.3.4、釋放資源

    2024年02月02日
    瀏覽(33)
  • JAVA連接數(shù)據(jù)庫 JDBC編程

    JAVA連接數(shù)據(jù)庫 JDBC編程

    提供修改數(shù)據(jù)庫和查詢數(shù)據(jù)庫的代碼,兩者只有很細(xì)微的差別 ????????注意在進(jìn)行連接數(shù)據(jù)庫首先你得下載你對應(yīng)MYSQL版本的JDBC驅(qū)動包,比如MYSQL8.0版本的你就要下載MYSQL8.0版本的JDBC驅(qū)動包,MYSQL5.1版本的你就要下載MYSQL5.1版本的JDBC驅(qū)動包 我下載的8.0版本的驅(qū)動包就是這個

    2024年02月15日
    瀏覽(98)
  • JDBC --- Java的數(shù)據(jù)庫編程

    JDBC --- Java的數(shù)據(jù)庫編程

    目錄 ??一、數(shù)據(jù)庫編程的必備條件 ??二、什么是 JDBC JDBC 的優(yōu)勢 ??三、JDBC 使用流程 以及 常用接口和類的講解 ??0. 前置工作 ??1. 引入依賴 ??2. 數(shù)據(jù)庫連接Connection ??3. 創(chuàng)建操作命令 Statement ??4. 使用操作命令來執(zhí)行 SQL ??5. 處理結(jié)果集 ResultSet ??6. 釋放資源 ??完整

    2024年02月09日
    瀏覽(27)
  • 查看Oracle_表名、字段名、注釋、進(jìn)程及殺進(jìn)程等常用語句

    -- 查看ORACLE 數(shù)據(jù)庫中本用戶下的所有表 SELECT table_name FROM user_tables; -- 查看ORACLE 數(shù)據(jù)庫中所有用戶下的所有表 select user,table_name from all_tables; -- 查看ORACLE 數(shù)據(jù)庫中本用戶下的所有列 select table_name,column_name from user_tab_columns; -- 查看ORACLE 數(shù)據(jù)庫中本用戶下的所有列 select user,tabl

    2024年02月09日
    瀏覽(26)
  • Java-JDBC連接數(shù)據(jù)庫

    Java-JDBC連接數(shù)據(jù)庫

    目錄 一、JDBC開發(fā)步驟 1.Java程序連接數(shù)據(jù)庫 1.1引入MySQL驅(qū)動包 1.2Java連接MySQL步驟 2 實現(xiàn)增刪改查操作 2.1 添加數(shù)據(jù) 2.2 修改數(shù)據(jù) 2.3 刪除數(shù)據(jù) 2.4 查詢數(shù)據(jù) 二、JDBC處理相關(guān)問題 1 解決SQL注入問題 1.1、問題演示 1.2、解決問題 2 JDBC事務(wù)處理 3 獲取自增長鍵值 4 批處理操作 1.1 引入

    2024年02月09日
    瀏覽(90)
  • 【JDBC】Java連接MySQL數(shù)據(jù)庫

    【JDBC】Java連接MySQL數(shù)據(jù)庫

    數(shù)據(jù)庫編程指的是通過編程語言與數(shù)據(jù)庫進(jìn)行交互和操作的過程,包括使用編程語言創(chuàng)建、連接、查詢、更新和刪除數(shù)據(jù)庫中的數(shù)據(jù),以及管理數(shù)據(jù)庫結(jié)構(gòu)和其他相關(guān)工作等。 另外,不同的數(shù)據(jù)庫,對應(yīng)不同的編程語言提供了不同的數(shù)據(jù)庫驅(qū)動包,如:MySQL提供了Java的驅(qū)動包

    2024年02月15日
    瀏覽(790)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包