文档章节

JDBC获取数据库表中字段详细信息

marjey
 marjey
发布于 2016/11/13 15:22
字数 562
阅读 30
收藏 0
package per.DatabaseConnection.JDBCConnector;

import java.sql.*;

/**
 * Created by 爹 on 2016/11/13.
 */


class TestDemo {
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/hidb";
            String user = "root";
            String pass = "402141";
            conn = DriverManager.getConnection(url, user, pass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static void main(String[] args) {
        Connection conn = getConnection();
        String sql = "select * from hi_wtgl_gnxx  limit 1";
        PreparedStatement stmt;
        try {
            stmt = conn.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData data = rs.getMetaData();
            while (rs.next()) {
                for (int i = 1; i <= data.getColumnCount(); i++) {
//获得所有列的数目及实际列数
                    int columnCount = data.getColumnCount();
//获得指定列的列名
                    String columnName = data.getColumnName(i);
//获得指定列的列值
                    String columnValue = rs.getString(i);
//获得指定列的数据类型
                    int columnType = data.getColumnType(i);
//获得指定列的数据类型名
                    String columnTypeName = data.getColumnTypeName(i);
//所在的Catalog名字
                    String catalogName = data.getCatalogName(i);
//对应数据类型的类
                    String columnClassName = data.getColumnClassName(i);
//在数据库中类型的最大字符个数
                    int columnDisplaySize = data.getColumnDisplaySize(i);
//默认的列的标题
                    String columnLabel = data.getColumnLabel(i);
//获得列的模式
                    String schemaName = data.getSchemaName(i);
//某列类型的精确度(类型的长度)
                    int precision = data.getPrecision(i);
//小数点后的位数
                    int scale = data.getScale(i);
//获取某列对应的表名
                    String tableName = data.getTableName(i);
// 是否自动递增
                    boolean isAutoInctement = data.isAutoIncrement(i);
//在数据库中是否为货币型
                    boolean isCurrency = data.isCurrency(i);
//是否为空
                    int isNullable = data.isNullable(i);
//是否为只读
                    boolean isReadOnly = data.isReadOnly(i);
//能否出现在where中
                    boolean isSearchable = data.isSearchable(i);
                    System.out.println(columnCount);
                    System.out.println("获得列" + i + "的字段名称:" + columnName);
                    System.out.println("获得列" + i + "的字段值:" + columnValue);
                    System.out.println("获得列" + i + "的类型,返回SqlType中的编号:" + columnType);
                    System.out.println("获得列" + i + "的数据类型名:" + columnTypeName);
                    System.out.println("获得列" + i + "所在的Catalog名字:" + catalogName);
                    System.out.println("获得列" + i + "对应数据类型的类:" + columnClassName);
                    System.out.println("获得列" + i + "在数据库中类型的最大字符个数:" + columnDisplaySize);
                    System.out.println("获得列" + i + "的默认的列的标题:" + columnLabel);
                    System.out.println("获得列" + i + "的模式:" + schemaName);
                    System.out.println("获得列" + i + "类型的精确度(类型的长度):" + precision);
                    System.out.println("获得列" + i + "小数点后的位数:" + scale);
                    System.out.println("获得列" + i + "对应的表名:" + tableName);
                    System.out.println("获得列" + i + "是否自动递增:" + isAutoInctement);
                    System.out.println("获得列" + i + "在数据库中是否为货币型:" + isCurrency);
                    System.out.println("获得列" + i + "是否为空:" + isNullable);
                    System.out.println("获得列" + i + "是否为只读:" + isReadOnly);
                    System.out.println("获得列" + i + "能否出现在where中:" + isSearchable);
                }
            }
        } catch (SQLException e) {
            System.out.println("数据库连接失败");
        }
    }
}

© 著作权归作者所有

marjey
粉丝 3
博文 173
码字总数 139219
作品 0
昆明
私信 提问
以面向对象的思想实现数据表的添加和查询,JDBC代码超详细

以面向对象的思想编写JDBC程序,实现使用java程序向数据表中添加学生信息,并且可以实现给定身份证号查询学生信息或给定准考证号查询学生信息。 欢迎工作一到八年的Java工程师朋友们加入Jav...

编程SHA
2018/12/04
0
0
优化JDBC性能的一些基本原则

开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其...

hchen1982
2011/08/01
0
0
运用Java递归获取数据库的目录表结构

数据库设计 现在要设计一个目录数据库表,即一个表中存有根目录和各级子目录,这时候我们可以设计一张表,用parent_id来存储子目录对应的父目录的序号,设计表如下: 表的字段类型: +-----...

断桥残雪断桥残雪
2015/08/07
0
0
在 Hibernate 中直接操作 JDBC 接口

简介: Hibernate 在处理多表关联及分组排序等复杂数据库查询操作时,其固有的 O-R 映射机制会产生大量冗余 SQL 操作,系统性能比传统的 JDBC 低很多。本文分析了 Hibernate 产生此类问题的原...

红薯
2010/04/16
752
2
JDBC事务管理及SavePoint示例

默认情况下,当我们创建一个数据库连接时,会运行在自动提交模式(Auto-commit)下。这意味着,任何时候我们执行一条SQL完成之后,事务都会自动提交。所以我们执行的每一条SQL都是一个事务,...

heroShane
2014/02/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Oracle SQL语法实例合集

如需转载请注明出处https://my.oschina.net/feistel/blog/3052024 目的:迅速激活Oracle SQL 参考:《Oracle从入门到精通》 ------------------------------------------------------------......

LoSingSang
今天
2
0
增加 PostgreSQL 服务进程的最大打开文件数

https://serverfault.com/questions/628610/increasing-nproc-for-processes-launched-by-systemd-on-centos-7 要在systemd的配置里加才行...

helloclia
今天
2
0
组合模式在商品分类列表中的应用

在所有的树形结构中最适合的设计模式就是组合模式,我们看看常用商品分类中如何使用。 先定义一个树形结构的商品接口 public interface TreeProduct { List<TreeProduct> allProducts(...

算法之名
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部