将数据库中的表信息读取出来

package com.cloud.smartreport.utils;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List; import org.smart4j.framework.dao.DatabaseHelper; public class DbToWord
{
public static void main(String[] args)
{ try
{
Connection conn = DatabaseHelper.getConnection();
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(1));
}
rs.close(); System.out.println();
/**
* 获取指定的数据库的所有表的类型,getTables()的第一个参数就是数据库名 因为与MySQL连接时没有指定,这里加上,剩下的参数就可以为null了
* 第二个参数是模式名称的模式,但是输出也是什么都没有。谁知道告诉我一声
*/
System.out.println("获取指定的数据库的所有表的类型");
ResultSet rs1 = metadata.getTables("stock", null, null, null);
while (rs1.next())
{
System.out.println();
System.out.println("数据库名:" + rs1.getString(1));
System.out.println("表名: " + rs1.getString(3));
System.out.println("类型: " + rs1.getString(4));
String tablename = rs1.getString(3); List<String> keyList = new ArrayList<String>();
ResultSet rs3 = metadata.getPrimaryKeys("stock", null, tablename);
while (rs3.next())
{
keyList.add(rs3.getString(4));
}
rs3.close(); PreparedStatement ps = conn.prepareStatement("select * from " + tablename);
ResultSet rs2 = ps.executeQuery();
ResultSetMetaData rsme = rs2.getMetaData(); int columnCount = rsme.getColumnCount();
//System.out.println("ResultSet对象中的列数" + columnCount);
System.out.println("列定义 | 自动编号 | 是否为空 | 主键 ");
for (int i = 1; i < columnCount; i++)
{
System.out.print(rsme.getColumnName(i) + " " + rsme.getColumnTypeName(i) + "("
+ rsme.getPrecision(i) + ")");
System.out.print("| " + rsme.isAutoIncrement(i));
System.out.print("| " + rsme.isNullable(i));
System.out.println("| "+ keyList.contains(rsme.getColumnName(i)));
}
System.out.println();
rs2.close();
ps.close(); }
rs1.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

输出结果:

数据库名:stock
表名: trd_daily_volume
类型: TABLE
列定义 | 自动编号 | 是否为空 | 主键
id BIGINT(20)| true| 0| true
stock_code VARCHAR(6)| false| 0| true
trade_date DATETIME(19)| false| 1| false
trade_status INT(10)| false| 1| false
open_price DOUBLE(9)| false| 1| false
high_price DOUBLE(9)| false| 1| false
low_price DOUBLE(9)| false| 1| false
close_price DOUBLE(9)| false| 1| false
dnshr_trade BIGINT(12)| false| 1| false

  

java 读取数据库中表定义的更多相关文章

  1. (转)java读取数据库表信息,子段

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...

  2. EasyUI+JSP之java读取数据库后JSON格式数据的返回及调用

    做作业工程中遇到一些问题,特此记录一下 解决的问题:使用EasyUI框架搭建简单学生管理系统(数据库增删改查)操作时配合JSP,不知道如何把从数据库获得的数据封装成JSON格式并传回前端JSP并进行展 ...

  3. java 读取数据库数据转化输出XML输出在jsp页面

    因为老师实验报告要求,搭建服务端解析XML 下面代码实现转化XML格式也是在网上找的转化代码 输出在jsp页面以便于客户端解析是自己写的 一个类就解决了Test package tests; //三只 ...

  4. Java读取数据库数据生成柱状图

    此案例是用swing显示数据的.须要引入jfreechart相关包.不同版本号可能包不同样.本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class ...

  5. Java读取数据库中的xml格式内容,解析后修改属性节点内容并写回数据库

    直接附代码: 1.测试用的xml内容 <mxGraphModel> <root> <mxCell id="-1" /> <mxCell i ...

  6. java 读取数据库中文信息,为何在jsp页面中出现乱码

    有如下几种解决办法:1.保证项目的字符编码和每一个jsp页面的字符编码一致,如果不一致可能导致中文乱码问题<%@ page language="java" contentTy ...

  7. java+mysql实现保存图片到数据库,以及读取数据库存储的图片

    一:建表 二:获取数据库连接 1:导入mysql的驱动jar包,mysql-connector-java-5.1.8-bin.jar 2:写代码连接数据库,如下: /** * */ package c ...

  8. java读取CSV文件添加到sqlserver数据库

    在直接将CSV文件导入sqlserver数据库时出现了错误,原因还未找到,初步怀疑是数据中含有特殊字符.于是只能用代码导数据了. java读取CSV文件的代码如下: package experimen ...

  9. Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)

    转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...

随机推荐

  1. 使用mxmlc在命令行编译.as代码

    在cmd命令行环境下,敲mxmlc出现 提示Error: could not find JRE和"Error: could not find Java 2 Runtime Envi 解决办法 ...

  2. Maven与Ant使用reportNG代替testng

    大家在使用TestNG时一定会发现其本身的报告生成不但简陋而且相当的不美观,而ReportNG正是一款为TestNG量身定做的报告生成插件,其报告美观.简约.清晰.漂亮的特点让很多TestNG开始慢慢 ...

  3. luogu1003铺地毯[noip2011 提高组 Day1 T1]

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

  4. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  5. svn那些错误

    一.提交.a文件 第一种方法: 1. 通常选择svn的commit后一般不会上传.a文件. 2. 选中要上传的.a文件,右击选择Add Working Copy. 3. 然后再点击commit,就可以 ...

  6. javascript中的链表结构—从链表中删除元素

    1.概念 上一个博文我们讲到链表,其中有一个方法remove()是暂时注释的,这个方法有点复杂,需要添加一个Previous()方法找到要删除的元素的前一个节点,这一个博文我们来分析一下这个remov ...

  7. FMDB处理动态插入语句

    昨天做一个需求,参数的数量不确定,所以无法使用这个API: - (BOOL)executeUpdate:(NSString*)sql, ... 但是用 - (BOOL)executeUpdate:(N ...

  8. Resample the mask

    我们所用功能像和mask的size不同时,我们首先要对mask进行resample,令其和功能像的size相同才可以. 根据严超赣老师的回复,有三种方法:http://restfmri.net/for ...

  9. java script 确认框

    <input name="Submit" type="submit" class="inputedit" value="删除 ...

  10. page-cache层

    pagecache层内存管理 如果使用page,尤其对于32位系统来说,kmap & kunmap,可以把做struct *page与虚拟地址的映射 用kmap做一个临时的映射,然后通过kun ...