`
leoizumi
  • 浏览: 93021 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

简易元数据管理操作

阅读更多

package cn.com.zhgl.test;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class TestMetaData {
	
	public static void test(String tableName,String tableOwner) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		Map tableMap = new HashMap();
		Map pkMap = new HashMap();
		Map indexMap = new HashMap();
		Map columnsMap = new HashMap();
		
		try {
			
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
			String url="jdbc:oracle:thin:@localhost:1521:myorcl";
			String user = tableOwner;
			String password = tableOwner;
			conn = DriverManager.getConnection(url, user, password);
			
			if(conn == null) {
				System.out.println("链接为空");
			}else {
				DatabaseMetaData metaData = conn.getMetaData();
				
				//获取jwzh_tools_zsb这个用户下的数据库表对象
				rs = metaData.getTables(null, tableOwner, null, null);
				tableMap = getObjectMap(rs,"TABLE_NAME","TABLE_TYPE");//获取jwzh_tools_zsb这个用户下的数据库对象Map
				
				//获取jwzh_tools_zsb这个用户下的数据库主键对象
				rs = metaData.getPrimaryKeys(tableOwner, tableOwner, tableName);
				pkMap = getPKMap(rs, "COLUMN_NAME", "PK_NAME");
				
				String option  = (String) tableMap.get(tableName);//取得tableName名称的对象的类型/表/视图/同义词
				int type = Integer.parseInt(option);
				switch(type) {
				case 1:
					System.out.println("表操作");
					//获取jwzh_tools_zsb这个用户下的数据库索引对象
					rs = metaData.getIndexInfo(tableOwner, tableOwner, tableName, false, false);
					indexMap = getIndexMap(rs, "COLUMN_NAME", "INDEX_NAME");
					
					String querySQL = "select TABLE_NAME,COLUMN_NAME,COMMENTS FROM USER_COL_COMMENTS where TABLE_NAME=?";
					pstmt = conn.prepareStatement(querySQL);
					pstmt.setString(1, tableName);
					rs = pstmt.executeQuery();
					Map commentMap = getTableObjectMap(rs, "COLUMN_NAME", "COMMENTS");
					//获取jwzh_tools_zsb这个用户下的数据库列对象
					ResultSet rscol = metaData.getColumns(tableOwner, tableOwner, tableName, null);
					
					while(rscol.next()) {
						String columnName = rscol.getString("COLUMN_NAME");
						String typeName = rscol.getString("TYPE_NAME");
						int columnSize = rscol.getInt("COLUMN_SIZE");
						String comment = (String) commentMap.get(columnName);
						String index = (String) indexMap.get(columnName)==null?"0":"1";
						String pk = (String) pkMap.get(columnName)==null?"0":"1";
						
						//持久化操作,此处省略 。。。 
					}
					break;
				case 2:
					System.out.println("视图操作");
					pstmt = conn.prepareStatement("select * from "+tableName+" where rownum = 1");
					rs = pstmt.executeQuery();
					ResultSetMetaData ViewMetaData = rs.getMetaData();
					
					pstmt = conn.prepareStatement("SELECT TABLE_NAME, COLUMN_NAME, COMMENTS FROM USER_COL_COMMENTS WHERE TABLE_NAME=?");
					pstmt.setString(1, tableName);
					rs = pstmt.executeQuery();
					Map viewCommonMap = getTableObjectMap(rs, "COLUMN_NAME", "COMMENTS");
					int columnCount  = ViewMetaData.getColumnCount();
					for(int index  = 1;index<=columnCount;index++) {
						String columnName = ViewMetaData.getColumnName(index);
						String comment = (String) viewCommonMap.get(columnName);
						
						//持久化操作,此处省略 。。。 
					}
					
					
					break;
				}
				
			}
			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static Map getObjectMap(ResultSet rs,String s1,String s2) throws Exception {
		Map resultMap = new HashMap();
		String type = "1";
		while(rs.next()) {
			String key = "";
			String value = "";
			key = rs.getString(s1);
			value = rs.getString(s2);
			if("TABLE".equals(value)) {
				type = "1";
			}else if("VIEW".equals(value)) {
				type = "2";
			}
			resultMap.put(key, type);
		}
		return resultMap;
	}
	
	public static Map getTableObjectMap(ResultSet rs,String s1,String s2) throws Exception {
		Map resultMap = new HashMap();
		while(rs.next()) {
			String key = "";
			String value = "";
			key = rs.getString(s1);
			value = rs.getString(s2);
			resultMap.put(key, value);
		}
		return resultMap;
	}
	
	public static Map getColumnObjectMap(ResultSet rs,String s1,String s2) throws Exception {
		Map resultMap = new HashMap();
		while(rs.next()) {
			String key = "";
			String value = "";
			key = rs.getString(s1);
			value = rs.getString(s2);
			resultMap.put(key, value);
		}
		return resultMap;
	}
	
	public static Map getPKMap(ResultSet rs,String s1,String s2) throws Exception {
		Map resultMap = new HashMap();
		while(rs.next()) {
			String key = "";
			String value = "";
			key = rs.getString(s1);
			value = rs.getString(s2);
			resultMap.put(key, value);
		}
		return resultMap;
	}
	
	public static Map getIndexMap(ResultSet rs,String s1,String s2) throws Exception {
		Map resultMap = new HashMap();
		while(rs.next()) {
			String key = "";
			String value = "";
			key = rs.getString(s1);
			value = rs.getString(s2);
			resultMap.put(key, value);
		}
		return resultMap;
	}

	public static void main(String[] args) {
		test("S_USER","JWZH_TOOLS_ZSB");
	}
}
 
分享到:
评论

相关推荐

    简易文件管理系统

    1. 数据库设计:数据库包含多个表,其中一个主表存储文件的基本信息,其他可能有元数据表、用户表等。主表中可能的字段有文件ID、文件名、文件路径、创建者、创建日期、最后修改日期等,这些字段有助于高效检索。 2...

    简易图书管理系统.zip

    总的来说,“简易图书管理系统”是一个基础的图书管理解决方案,它提供了基本的图书管理操作。通过理解其内部结构和工作原理,我们可以对其进行改进,增加更多实用功能,以满足更广泛的用户需求。同时,这个项目也为...

    简易ic 报价管理系统

    "简易IC报价管理系统"是一款专为电子元器件行业设计的库存和询报价管理软件,旨在帮助IC贸易商更高效地管理他们的库存和报价流程。该系统涵盖了IC库存管理、询价与报价等核心功能,是商务管理和电子商务操作的重要...

    简易资源管理器/文件管理器

    在资源管理器中,通常选择详细信息视图,这样可以提供丰富的文件元数据。ListView控件通过`ListViewItem`对象来表示文件,可以添加多个列来展示不同属性。 3. **RichTextBox控件**: RichTextBox控件在资源管理器...

    客户用户积分管理(带简易QT界面)

    本项目“客户用户积分管理”旨在通过一个简易的QT界面,实现对客户消费积分的高效管理和折扣优惠策略。QT作为一款跨平台的C++图形用户界面库,其丰富的功能和易用性使得它成为开发此类应用的理想选择。接下来,我们...

    C# winform简易户口管理

    综上所述,这个"C# WinForm简易户口管理系统"集成了C#的强大编程能力、WinForm的易用性以及SQL Server的数据管理功能,提供了用户友好的户口信息管理平台。通过深入理解这些技术,开发者可以进一步改进和扩展系统,...

    VC编的简易图片管理系统

    在图片管理系统中,数据库可能存储了图片的元数据,如文件名、创建日期、作者等信息。开发者可能使用SQL语句进行数据操作,例如插入、更新和查询图片信息。 在实际应用中,图片的加载、显示和保存是核心功能。在VC...

    简易网上论坛 简易网上论坛 简易网上论坛

    这些框架为开发者提供了快速构建Web应用的基础结构,包括路由处理、模板渲染、数据操作等。 2. **前端技术**:前端界面通常由HTML、CSS和JavaScript组成。HTML用于定义页面结构,CSS负责样式设计,让论坛看起来美观...

    基于Java Swing简易的图书管理系统

    - `.idea`: IntelliJ IDEA项目元数据。 - `lib`: 存放项目依赖的外部库,可能包含JDBC驱动。 7. **开发环境** - 该项目可能使用Eclipse或IntelliJ IDEA作为开发IDE,两者都支持Java Swing开发,并提供了丰富的...

    JSP+servlet+JDBC+Mysql 简易商品管理系统

    4. `.idea`:IDEA项目的元数据文件,包含了项目设置、配置和版本控制信息。 5. `out`:编译后的输出目录,存放了编译后的字节码文件和运行时生成的文件。 6. `web`:Web应用的根目录,包含JSP页面、静态资源(如CSS...

    元数据基本策略研究.doc

    2. **兼容性与互操作性**:确保制定的元数据标准能够与其他国内外标准兼容,促进国际间的数据交流与共享。 3. **扩展与定制**:在继承和利用现有元数据标准的基础上,根据医学数据的特性进行必要的扩展和定制,以...

    简易的图书管理系统项目20240410134946

    3. `codemirror` 文件夹:CodeMirror 是一个开源的代码编辑器组件,可能被用在这个项目中作为后台管理界面的代码编辑功能,允许管理员直接编辑图书的元数据或者注释等文本信息。其中包含的不同模式文件(如 `shell....

    C#自制简易任务管理器

    8. **项目结构**:`Properties`目录通常包含了项目属性文件,如`AssemblyInfo.cs`,用来设置项目属性和元数据。`obj`和`bin`目录是编译过程中产生的中间文件和输出文件夹,包含编译后的类库、可执行文件及依赖项。 ...

    bicycle_project_管理系统_后台管理系统_一套简易自行车租赁系统源码_

    它们存储了关于项目的构建路径、元数据和项目设置等信息,使得开发人员可以在Eclipse环境中正确地导入和构建项目。 【源代码目录】"src"通常包含项目的源代码文件,可能包括Java类、接口、枚举等,是实现系统功能的...

    文章管理-php简易版源码

    7. **CRUD操作**:创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)是任何数据管理系统的四大基本功能,这个源码应该实现了这些操作。 8. **错误处理和日志**:为了保证系统的稳定性和安全性,源码可能...

    TCGA简易下载工具

    在实际使用中,用户需要了解一些基本的生物信息学知识,比如GDC(Genomic Data Commons)数据平台的结构,以及TCGA数据的元数据描述。同时,用户还需要一定的编程基础,如熟悉命令行操作或者能够理解工具的使用文档...

    简易文件系统设计

    1. **超级块(Superblock)**:这是文件系统最重要的元数据,包含了整个文件系统的状态信息,如文件系统的总大小、已用空间、空闲空间、块组信息等。在设计中,你需要定义超级块的数据结构,并考虑如何在磁盘上保存...

    Tcms个人简易网站系统

    6. **数据库管理**:从提供的压缩包文件名“Tcms个人简易网站系统---tcms数据库”来看,Tcms使用数据库存储网站数据。数据库可能包含了文章、用户信息、设置等各种数据,是系统运行的基础。 7. **安全防护**:考虑...

    简易快速j2ee开发GIS数据建库基本思想

    通过以上详细解释,我们可以看到,简易快速J2EE开发GIS数据建库的基本思想涵盖了系统设计、开发、管理和维护的全过程,强调了标准化、模块化和面向服务的设计原则,以实现高效、可靠的GIS数据管理和应用。

    基于浏览器的简易资源管理器(源码)_dotnet整站程序.rar

    6. **数据库集成**:可能涉及到数据库存储文件元数据或者用户信息,如用户文件操作记录、权限设置等。 7. **多平台兼容**:作为基于浏览器的应用,它应该能在各种操作系统和浏览器上运行,因此需要考虑跨平台兼容性...

Global site tag (gtag.js) - Google Analytics