`
lan13217
  • 浏览: 482966 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

jdbc 表 meta data

 
阅读更多
import java.io.IOException;
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;

public class Jdbc {

    // 数据库连接地址
    private static final String url = "jdbc:mysql://localhost:3306/st";
    // 用户名密码
    private static final String user = "root";
    private static final String pwd = "";

    /***
     * 数据库查询
     * 
     * @throws ClassNotFoundException
     * @throws IOException
     */
    public static void query() throws ClassNotFoundException, IOException {
    Connection conn = null;
    java.sql.PreparedStatement pst = null;
    ResultSet re = null;
    /*
     * DBC提供了DatabaseMetaData来封装数据库连接对应的数据库信息,
     * 通过Connection的getMetaData方法来获取该对象。
     * DatabaseMetaData接口通常数据库驱动提供商完成实现,其作用是让用户了解数据库的底层信息。
     * 使用该接口可以了解数据库底层的实现,便于完成多个数据库的相互切换。
     */
    DatabaseMetaData metadata = null; 
    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(url, user, pwd);

        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("驱动程序的版本:" + metadata.getTableTypes());
        System.out.println("............................................");
        pst = conn.prepareStatement("select * from company_basic");

        // 获取数据库列
        re = pst.executeQuery();
        // 数据库列名
        ResultSetMetaData data = re.getMetaData();
        // getColumnCount 获取表列个数
        for (int i = 1; i <= data.getColumnCount(); i++) {
        // 获取列表 index 从1开始、列名、列类型、列的数据长度
        System.out.println(data.getColumnName(i) + "\t" + data.getColumnTypeName(i) + "\t"
                + data.getColumnDisplaySize(i) + "\t" + data.getColumnClassName(i));
        }
        ResultSet resultSet = metadata.getTables(null, "%", "%", new String[] { "TABLE" });
        /*
         * while (resultSet.next()) { String
         * tableName=resultSet.getString("TABLE_NAME"); ResultSet rs =
         * metadata.getColumns(null, "%", tableName, "%");
         * System.out.println("表名:"+tableName+"\t\n表字段信息:");
         * while(rs.next()){
         * System.out.println("字段名:"+rs.getString("COLUMN_NAME")+"\t字段注释:"+
         * rs.getString("REMARKS")+"\t字段数据类型:"+rs.getString("TYPE_NAME")); }
         * }
         */
        ResultSet rs = metadata.getColumns(null, "%", "company_basic", "%");
        System.out.println("表名:" + "company_basic" + "\t\n表字段信息:");
        while (rs.next()) {
        System.out.println("字段名:" + rs.getString("COLUMN_NAME") + "\t字段注释:" + rs.getString("REMARKS")
                + "\t字段数据类型:" + rs.getString("TYPE_NAME"));
        }

    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        closeConnection(conn, pst, re);
    }
    }

    /**
     * 关闭数据库链接
     * 
     * @param conn
     * @param pst
     * @param re
     */
    public static void closeConnection(Connection conn, PreparedStatement pst, ResultSet re) {

    if (conn != null)
        try {
        conn.close();
        } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
    if (pst != null)
        try {
        pst.close();
        } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
    if (re != null)
        try {
        re.close();
        } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
    }

    public static void main(String[] args) throws IOException {
    try {
        query();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
}
分享到:
评论

相关推荐

    jfreechart-1.0.4.jar jfreechart-1.0.4-swt.jar

    三、创建数据库中的表 test 四、JSP源程序: ;charset=GBK"%&gt; *" %&gt; *" %&gt; *" %&gt; *" %&gt; *" %&gt; &lt;%@ page import="org.jfree.data.category.DefaultCategoryDataset" %&gt; &lt;%@ page import="org.jfree.data....

    DataGear数据可视化分析平台

    数据库连接支持模块,定义可从指定目录加载JDBC驱动、新建连接的API 3、datagear-dataexchange 数据导入/导出底层模块,定义导入/导出指定数据源数据的API 4、datagear-management 系统业务服务模块,定义数据源、...

    Python Cookbook英文版

    8.12 Accessing a JDBC Database from a Jython Servlet 8.13 Module: jet2sql-Creating a SQL DDL from an Access Database 9. User Interfaces 9.1 Avoiding lambda in Writing Callback Functions 9.2 ...

    Python Cookbook, 2nd Edition

    Sending Binary Data to Standard Output Under Windows Recipe 2.13. Using a C++-like iostream Syntax Recipe 2.14. Rewinding an Input File to the Beginning Recipe 2.15. Adapting a File-like Object...

    Spring中文帮助文档

    11.2. 利用JDBC核心类控制JDBC的基本操作和错误处理 11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口...

    DataGear数据可视化分析平台-其他

    数据库连接支持模块,定义可从指定目录加载JDBC驱动、新建连接的API 3、datagear-dataexchange 数据导入/导出底层模块,定义导入/导出指定数据源数据的API 4、datagear-management 系统业务服务模块,定义数据源、...

    Spring API

    11.2. 利用JDBC核心类控制JDBC的基本操作和错误处理 11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口...

    hibernate 教程

    操作持久化数据(Manipulating Persistent Data) 9.1. 创建一个持久化对象 9.2. 装载对象 9.3. Querying 9.3.1. 标量查询(Scalar query) 9.3.2. 查询接口(Query interface) 9.3.3. 可滚动迭代...

    hibernate

    操作持久化数据(Manipulating Persistent Data) 9.1. 创建一个持久化对象 9.2. 装载对象 9.3. Querying 9.3.1. 标量查询(Scalar query) 9.3.2. 查询接口(Query interface) 9.3.3. 可滚动迭代...

    Java学习笔记-个人整理的

    {13.9}Meta Data}{201}{section.13.9} {13.10}可滚动结果集}{201}{section.13.10} {13.11}Procedure}{201}{section.13.11} {14}xml}{204}{chapter.14} {14.1}元素}{204}{section.14.1} {14.2}XML的设计}{205}{...

    cms后台管理

    3.修改jdbc链接,自己导入数据库。 4.把服务器下install\config下的web.xml复制出来覆盖掉新建项目WEB-INF下的web.xml 5.classes下有四个文件,手动烤到myeclipse项目src根目录下中 6.将服务器上jeecms项目删掉,...

    spring_MVC源码

    建好表后,生成实体类 [java] view plaincopy 01.package com.mvc.entity; 02. 03.import java.io.Serializable; 04. 05.import javax.persistence.Basic; 06.import javax.persistence.Column; 07....

    spring-framework-reference4.1.4

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    spring-framework-reference-4.1.2

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    jsp探针 ver0.1

    return prop.getProperty("sun.arch.data.model"); } final private long getDiskForLinuxInfo(final String dirPath) { try { String dir = dirPath.startsWith("/") ? dirPath : "/"+dirPath; long space = -1; ...

Global site tag (gtag.js) - Google Analytics