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

本文提供了一个使用 Java 连接 MySQL 数据库并执行 SQL 查询的示例代码。通过示例展示了如何获取数据库连接、执行 SQL 语句、解析查询结果,并详细解释了 ResultSetMetaData 的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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("数据库连接失败");
        }
    }
}

转载于:https://my.oschina.net/marjeylee/blog/787006

要使用JDBC获取DB2中的字段,你可以按照以下步骤进行操作: 1. 导入必要的包和类: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; ``` 2. 建立数据库连接: ```java String url = "jdbc:db2://hostname:port/databaseName"; String username = "yourUsername"; String password = "yourPassword"; Connection connection = DriverManager.getConnection(url, username, password); ``` 请将"hostname"替换为DB2服务器的主机名,"port"替换为DB2服务器的端口号,"databaseName"替换为要连接的数据库名称,"yourUsername"和"yourPassword"分别替换为您的DB2用户名和密码。 3. 创建Statement对象: ```java Statement statement = connection.createStatement(); ``` 4. 执行SQL查询语句: ```java String sql = "SELECT * FROM yourTableName"; ResultSet resultSet = statement.executeQuery(sql); ``` 请将"yourTableName"替换为您要查询的的名称。 5. 获取结果集中的字段信息: ```java ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { String columnName = metaData.getColumnName(i); String columnType = metaData.getColumnTypeName(i); int columnSize = metaData.getColumnDisplaySize(i); System.out.println("Column Name: " + columnName); System.out.println("Column Type: " + columnType); System.out.println("Column Size: " + columnSize); } ``` 上述代码通过ResultSetMetaData类获取结果集中的字段信息,包括字段名称、字段类型和字段大小等。 6. 关闭连接和相关资源: ```java resultSet.close(); statement.close(); connection.close(); ``` 确保在使用完之后关闭连接和相关资源,以释放数据库资源和避免内存泄漏。 这就是使用JDBC从DB2获取字段信息的基本步骤。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值