(转)java读取数据库表信息,子段
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/***
* 2014-07-21日:
* oracle数据库, 表结构查询 ,字段信息查询,字段注释查询
* 表字段查询 all_tab_columns
* 表字段注释查询 all_col_comments
* @author 王华荣
*
*/
public class OracleTable {
private static final String DRIVER_CLASS = "oracle.jdbc.driver.OracleDriver";
private static final String DATABASE_URL = "jdbc:oracle:thin:@192.168.1.10:1521:orcl";
private static final String DATABASE_USER = "dev";
private static final String DATABASE_PASSWORD = "dev";
private static Connection con = null; public static Connection getConnection() {
try {
Class.forName(DRIVER_CLASS);
con=DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
return con;
} catch (Exception ex) {
System.out.println("2:"+ex.getMessage());
}
return con;
} /***
* 打印test
* @throws SQLException
*/
public static void sysoutStrTablePdmCloumns(String Table,String Owner) throws SQLException{
getConnection(); List<HashMap<String,String>> columns = new ArrayList<HashMap<String,String>>(); try{
Statement stmt = con.createStatement(); String sql=
"select "+
" comments as \"Name\","+
" a.column_name \"Code\","+
" a.DATA_TYPE as \"DataType\","+
" b.comments as \"Comment\","+
" decode(c.column_name,null,'FALSE','TRUE') as \"Primary\","+
" decode(a.NULLABLE,'N','TRUE','Y','FALSE','') as \"Mandatory\","+
" '' \"sequence\""+
" from "+
" all_tab_columns a, "+
" all_col_comments b,"+
" ("+
" select a.constraint_name, a.column_name"+
" from user_cons_columns a, user_constraints b"+
" where a.constraint_name = b.constraint_name"+
" and b.constraint_type = 'P'"+
" and a.table_name = '"+Table+"'"+
" ) c"+
" where "+
" a.Table_Name=b.table_Name "+
" and a.column_name=b.column_name"+
" and a.Table_Name='"+Table+"'"+
" and a.owner=b.owner "+
" and a.owner='"+Owner+"'"+
" and a.COLUMN_NAME = c.column_name(+)" +
" order by a.COLUMN_ID";
System.out.println(sql);
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()){
HashMap<String,String> map = new HashMap<String,String>();
map.put("Name", rs.getString("Name"));
map.put("Code", rs.getString("Code"));
map.put("DataType", rs.getString("DataType"));
map.put("Comment", rs.getString("Comment"));
map.put("Primary", rs.getString("Primary"));
map.put("Mandatory", rs.getString("Mandatory"));
columns.add(map);
}
}
catch (SQLException e){
e.printStackTrace();
}finally{
con.close();
}
}
public static void main(String[] args) throws SQLException{ sysoutStrTablePdmCloumns("CT_INFO_CONTRACT_BORROW","DEV"); } }
test
java获取数据库里表的名字 博客分类: java 一.Java方法
// 得到当前数据库下所有的表名
Java代码 收藏代码
public void getTableNameByCon(Connection con) {
try {
DatabaseMetaData meta = con.getMetaData();
ResultSet rs = meta.getTables(null, null, null,
new String[] { "TABLE" });
while (rs.next()) {
System.out.println("表名:" + rs.getString());
System.out.println("表所属用户名:" + rs.getString());
System.out.println("------------------------------");
}
con.close();
} catch (Exception e) {
try {
con.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// TODO Auto-generated catch block
e.printStackTrace();
}
}
二.通过sql语句得到数据库里所有的表名
--MySQL数据库
Java代码 收藏代码
show tables;
--Oracle数据库(当前登录用户下的表)
Java代码 收藏代码
select uo.object_name from user_objects uo where uo.object_type = 'TABLE';
--sql server /2005数据库
Java代码 收藏代码
select name from sysobjects
--sybase数据库
Java代码 收藏代码
select name from sysobjects where type='U';
--DB2数据库 Java代码 收藏代码
select tabname from syscat.tables where tabschema = current schema ;//
获取当前模式下面的所有用户表 转自:http://hi.baidu.com/rybwxn/blog/item/1a59502a75a7de25d52af1cc.html
test
首先是DatabaseMetaData接口: public static void main(String[] args) { //这里没有指定数据库
String url = "jdbc:mysql://127.0.0.1:3306/";
String user = "root";
String pass = "";
try { Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(url, user, pass);
DatabaseMetaData metadata = conn.getMetaData();
System.out.println("数据库已知的用户: "+ metadata.getUserName());
System.out.println("数据库的系统函数的逗号分隔列表: "+ metadata.getSystemFunctions());
System.out.println("数据库的时间和日期函数的逗号分隔列表: "+ metadata.getTimeDateFunctions());
System.out.println("数据库的字符串函数的逗号分隔列表: "+ metadata.getStringFunctions());
System.out.println("数据库供应商用于 'schema' 的首选术语: "+ metadata.getSchemaTerm());
System.out.println("数据库URL: " + metadata.getURL());
System.out.println("是否允许只读:" + metadata.isReadOnly());
System.out.println("数据库的产品名称:" + metadata.getDatabaseProductName());
System.out.println("数据库的版本:" + metadata.getDatabaseProductVersion());
System.out.println("驱动程序的名称:" + metadata.getDriverName());
System.out.println("驱动程序的版本:" + metadata.getDriverVersion()); System.out.println();
System.out.println("数据库中使用的表类型");
ResultSet rs = metadata.getTableTypes();
while (rs.next()) {
System.out.println(rs.getString());
}
rs.close(); System.out.println();
/**
* 获取指定的数据库的所有表的类型,getTables()的第一个参数就是数据库名
* 因为与MySQL连接时没有指定,这里加上,剩下的参数就可以为null了
* 第二个参数是模式名称的模式,但是输出也是什么都没有。谁知道告诉我一声
*/
System.out.println("获取指定的数据库的所有表的类型");
ResultSet rs1 = metadata.getTables("ssi2bbs", null, null, null);
while (rs1.next()) {
System.out.println();
System.out.println("数据库名:"+ rs1.getString());
System.out.println("表名: "+rs1.getString());
System.out.println("类型: "+rs1.getString());
}
rs1.close(); System.out.println();
System.out.println("获取指定的数据库的表的主键");
//获取指定的数据库的表的主键,第二个参数也是模式名称的模式,使用null了
ResultSet rs2 = metadata.getPrimaryKeys("mysql", null, "db");
while (rs2.next()) {
System.out.println("主键名称: "+ rs2.getString());
}
rs2.close(); System.out.println();
System.out.println("DatabaseMetaData.getIndexInfo()方法返回信息:");
ResultSet rs3 = metadata.getIndexInfo("ssi2bbs", null, "user", false, true);
while (rs3.next()) {
System.out.println("数据库名: "+ rs3.getString());
System.out.println("表模式: "+ rs3.getString());
System.out.println("表名称: "+ rs3.getString());
System.out.println("索引值是否可以不唯一: "+ rs3.getString());
System.out.println("索引类别: "+ rs3.getString());
System.out.println("索引名称: "+ rs3.getString());
System.out.println("索引类型: "+ rs3.getString());
System.out.println("索引中的列序列号: "+ rs3.getString());
System.out.println("列名称: "+ rs3.getString());
System.out.println("列排序序列: "+ rs3.getString());
System.out.println("TYPE为 tableIndexStatistic时它是表中的行数否则它是索引中唯一值的数量: "+ rs3.getString());
System.out.println("TYPE为 tableIndexStatisic时它是用于表的页数否则它是用于当前索引的页数: "+ rs3.getString());
System.out.println("过滤器条件: "+ rs3.getString());
}
rs3.close(); } catch (Exception e) {
e.printStackTrace();
}
}
ResultSetMetaData接口, 用于获取关于ResultSet 对象中列的类型和属性信息的对象。下面的代码是把一个表的列信息打印了出来。当然了,这只是一部分。详细的参考JAVA JDK。 public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/ssi2bbs","root","");
PreparedStatement ps = conn.prepareStatement("select * from bbs");
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsme = rs.getMetaData(); int columnCount = rsme.getColumnCount();
System.out.println("ResultSet对象中的列数"+ columnCount);
for (int i = ; i < columnCount ; i++) {
System.out.println();
System.out.println("列名称: "+ rsme.getColumnName(i));
System.out.println("列类型(DB): " + rsme.getColumnTypeName(i));
System.out.println("长度: "+ rsme.getPrecision(i) );
System.out.println("是否自动编号: "+ rsme.isAutoIncrement(i));
System.out.println("是否可以为空: "+ rsme.isNullable(i));
System.out.println("是否可以写入: "+ rsme.isReadOnly(i));
} } catch (Exception e) {
e.printStackTrace();
} }
test
(转)java读取数据库表信息,子段的更多相关文章
- Java 导出数据库表信息生成Word文档
一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看看生成的word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导 ...
- java 读取数据库中文信息,为何在jsp页面中出现乱码
有如下几种解决办法:1.保证项目的字符编码和每一个jsp页面的字符编码一致,如果不一致可能导致中文乱码问题<%@ page language="java" contentTy ...
- C#读取注册表信息
注册表是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动.硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等.这就意味着,如果注册表 ...
- SQL查询数据库信息, 数据库表名, 数据库表信息
SQL查询数据库信息, 数据库表名, 数据库表信息 ---------------------------------------------- -- 以下例子, 在sql_server 中可以直接运 ...
- Hibernate通过实体对象对应数据库表信息
Hibernate通过实体对象对应数据库表信息,包括:数据库表名称.主键列名.非主键列名等. 获取对象映射缓存管理类: AbstractEntityPersister aep = (AbstractE ...
- java 读取数据库中表定义
将数据库中的表信息读取出来 package com.cloud.smartreport.utils; import java.sql.Connection; import java.sql.Datab ...
- java读取properties配置文件信息
一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...
- Java获取数据库表 字段 存储的部分数据
在浏览器页面,选中图片(可多选) >单击删除按钮. 重点是, 本数据库表TabHeBeiTianQi中 存在 同一id,对应的picLocalPath字段 存储了多张图片,图片地址用 逗号 ...
- Java读取txt文件信息并操作。
一.java读取txt文件内容 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.Fi ...
随机推荐
- [原]数据库中的partitioning和sharding
1. 如何理解定义 在中文中,partitioning和sharding都有分区的意思.从大的方面来说,这两个词所执行的动作确实也和分区相关.partitioning在很多场合是vertical pa ...
- (组合数学3.1.2.2)POJ 2084 Game of Connections(卡特兰数公示的实现)
package com.njupt.acm; import java.math.BigInteger; import java.util.Scanner; public class POJ_2084 ...
- Vim常用命令手册
这两年工作基本都是用vim,用习惯发现到哪都离不开这玩意. 退出编辑器 :w 将缓冲区写入文件,即保存修改:wq 保存修改并退出:x 保存修改并退出:q 退出,如果对缓冲区进行过修改,则会提示:q! ...
- android 引用 project以及下拉刷新开源类库Android-PullToRefresh 的使用
Android-PullToRefresh 是一个github上的开源下拉刷新类库, GitHub .此外,该作者还有另外一个实用度和关注量极高的项目–另一种Android ActionBar的实现 ...
- git源码中的Makefile
https://github.com/chucklu/GitStudy 这链接里面的第一次提交 [chucklu@localhost GitStudy]$ cat Makefile CFLAGS= ...
- mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法
原因:没有使用管理员权限 解决方法:使用管理员权限打开cmd,然后运行mysqld -install,服务安装成功
- (转载)Let's Play Games!
第1题 Alice和她的同学Bob通过网上聊天商量明天早晨谁去教室打扫卫生的事,Bob说:“我在桌上放了一枚硬币,你猜一下,是正面朝上还是反面朝上?如果猜对了,我去扫地.如果猜错了,嘿嘿….” Al ...
- linux chmod 命令详解(转)
Ubuntu下修改目录权限需要先用 sudo 来获得管理员权限,格式如下: sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权 ...
- sharepoint 2010 如何给文档库或自定义列表添加评论功能
转:http://www.cfanz.cn/?c=article&a=read&id=40924 最近公司在知识库中,有一个需求,就是想要给文档添加评论功能,在sharepoint 2 ...
- MSP430的看门狗常见用法以及中断函数的书写方法
今天下午看了一下MSP430的看门狗的基本用法 看门狗是为了防止程序跑飞而设定的,但是由于看门狗是一个类似于定时器,因此可以把他当作定时器来使用 示例代码:用看门狗定时器使一个led闪烁 #inclu ...