一、整体代码

1、method1:执行select语句获取,select * from dims where 1 = 2

2、method2:执行show create table获取,show create table dims

3、method3:从jdbc数据库连接获取

import lombok.extern.slf4j.Slf4j;

import java.sql.*;
import java.util.Properties; /**
* 从jdbc中获取数据库表字段信息(包含字段名称、字段类型、字段注释、字段长度等)
*/
@Slf4j
public class test {
private static Connection connection; public static void main(String[] args) {
test test = new test();
// 第一种方式:执行sql语句获取 select * from dims where 1 = 2
test.method1();
// 第二种方式:执行sql语句获取 show create table dims
test.method2();
// 第三种方式:直接从jdbc数据库连接Connection实例中获取
test.method3();
} private void method1() {
try{
PreparedStatement preparedStatement = connection.prepareStatement("select * from dims where 1 = 2");
ResultSetMetaData resultSetMetaData = preparedStatement.executeQuery().getMetaData();
for (int i = 0; i < resultSetMetaData.getColumnCount(); i++) {
log.info("实例名:{}", resultSetMetaData.getCatalogName(i + 1));
log.info("表名:{}", resultSetMetaData.getTableName(i + 1));
log.info("类型:{}", resultSetMetaData.getColumnClassName(i + 1));
log.info("列类型:{}", resultSetMetaData.getColumnTypeName(i + 1));
log.info("字段名称:{}", resultSetMetaData.getColumnName(i + 1));
log.info("字段长度:{}", resultSetMetaData.getColumnDisplaySize(i + 1));
log.info("getColumnType:{}", resultSetMetaData.getColumnType(i + 1));
log.info("getPrecision:{}", resultSetMetaData.getPrecision(i + 1));
log.info("getScale:{}", resultSetMetaData.getScale(i + 1));
log.info("getSchemaName:{}", resultSetMetaData.getSchemaName(i + 1));
log.info("getScale:{}", resultSetMetaData.getScale(i + 1));
}
} catch (Exception e) {
log.error("method1 error ", e);
}
} private void method2() {
try{
PreparedStatement preparedStatement2 = connection.prepareStatement("show create table dims");
ResultSet resultSet2 = preparedStatement2.executeQuery();
while(resultSet2.next()) {
String tableName = resultSet2.getString("Table");
String createTable = resultSet2.getString("Create Table");
log.info("tableName:{}", tableName);
log.info("createTable:");
System.out.println(createTable);
}
} catch (Exception e) {
log.error("method2 error ", e);
}
} private void method3() {
try{
DatabaseMetaData databaseMetaData = connection.getMetaData();
// 获取所有表
ResultSet resultSet = databaseMetaData.getTables(null, null, null, new String[]{"TABLE"});
// 获取指定表
ResultSet specificResultSet = databaseMetaData.getColumns(null, "%", "dims", "%");
String columnName2;
String columnType2;
String comment2;
while(specificResultSet.next()) {
columnName2 = specificResultSet.getString("COLUMN_NAME");
columnType2 = specificResultSet.getString("TYPE_NAME");
comment2 = specificResultSet.getString("REMARKS");
log.info("COLUMN_NAME:{}", columnName2);
log.info("TYPE_NAME:{}", columnType2);
log.info("REMARKS:{}", comment2);
}
} catch (Exception e) {
log.error("method3 error ", e);
}
} static {
try{
Properties info = new Properties(); // 定义Properties对象
info.setProperty("user", "user"); // 设置Properties对象属性
info.setProperty("password", "123456");
Class.forName("com.mysql.cj.jdbc.Driver"); // 注册数据库驱动
String url = "jdbc:mysql://127.0.0.1:3306/databases"; // briup为数据库名称
connection = DriverManager.getConnection(url, info); // 获取连接数据库的Connection对象
} catch (Exception e) {
log.error("autoCodeGeneratorProcess error ", e);
}
}
}

三种方式从jdbc中获取数据库表字段信息的更多相关文章

  1. JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构

    JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...

  2. mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)

    通常来说对于mysql数据库插入数据获取主键的方法是采用selectKey的方式,特别是当你持久层使用mybatis框架的时候. 本文除此之外介绍其它两种获取主键的方式. 为了方便描述我们先建一张my ...

  3. 使用JDBC connect获取数据库表结构信息

    1.这是生成代码的关键 引入maven依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysq ...

  4. 【转】三种方式在C++中调用matlab

      C/C++调用Matlab 在工程实践中,C/C++调用Matlab 的方法主要有调用Matlab 计算引擎.包含m 文件转 换的C/C++文件,以及调用m文件生成的DLL 文件. 1 利用Mat ...

  5. Python基础之格式化输出的三种方式

    目录 1. 格式化输出的三种方式 1.1 占位符 1.2 format格式化 1.3 f-string格式化 1. 格式化输出的三种方式 在程序中,需要将输出信息打印成固定的格式,这时候就需要格式化输 ...

  6. WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式

    原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件.这篇文章介绍在WPF中实现PropertyGr ...

  7. 【spring Boot】spring boot获取资源文件的三种方式【两种情况下】

    首先声明一点,springboot获取资源文件,需要看是 1>从spring boot默认的application.properties资源文件中获取 2>还是从自定义的资源文件中获取 带 ...

  8. 反射概述-获取字节码Class对象的三种方式

    反射概述 判定结果∶*红色:失败*绿色:成功*一般我们会使用断言操作来处理结果*Assert.assertEquals(期望的结果,运算的结果);补充∶*Before:*修饰的方法会在测试方法之前被自 ...

  9. 转 Velocity中加载vm文件的三种方式

    Velocity中加载vm文件的三种方式   velocitypropertiespath Velocity中加载vm文件的三种方式:    方式一:加载classpath目录下的vm文件 Prope ...

  10. Oracle字符串行拆分成列的三种方式

    Oracle字符串行拆分成列的三种方式 --muphy 开发过程中经常会遇到将前台多个值用逗号连接一同传递到后台查询,这个用逗号连接的字符串分隔的每个字符串分别对应Oracle数据库表的不同行. 如下 ...

随机推荐

  1. Blazor 组件库 BootstrapBlazor 中Row组件介绍

    组件介绍 在Bootstrap中,我们经常使用row和col通过栅格化来控制显示位置. 如 <div class="row"> <div class=" ...

  2. Lambda【1】-- List相关Lambda表达式使用(上篇)

    Lambda在jdk1.8里面已经很好用了,在这里不讲底层的实现,只有简单的用法,会继续补全. 首先一个list我们要使用lambda的话,需要使用它的stream()方法,获取流,才能使用后续的方法 ...

  3. Windows 禁用笔记本键盘

    背景 笔记本键盘+机械键盘组合如下图: 由此产生一个问题: 笔记本键盘现在的用处是什么? 没什么用,那我们何不把桌面的位置利用起来? 这样怎么样? ===> 为了防止放东西时候误触,我们需要把笔 ...

  4. ZCMU-1149

    就是背包01问题 #include<iostream> #include<cstring> /*01背包问题*/ using namespace std; const int ...

  5. PL/SQL中文乱码修正

    我根据需求,,需要修改 数据库的部分表格的部分字段,然而在Update的时候,出现了中文乱码(Type字段). 此时,我用的是客户端,服务器没有安装,在另一台机器上,所以,我需要做的是修改客户端编码: ...

  6. cockpit-325以及新版本安装和cockpit-files安装

    查看版本cockpit可安装版本,发现最新的只有310版本 sudo yum list cockpit --showduplicates Last metadata expiration check: ...

  7. 鸿蒙应用开发从入门到入行 - 篇7:http网络请求

    鸿蒙应用开发从入门到入行 第七篇 - http网络请求 导读:在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用.ArkUI里的基础组件,并通过制作一个简单界面掌握使用 HarmonyOS - ...

  8. 【杂谈】服务端能同时处理多少个 Socket 连接?背后的资源与限制分析

    一个服务端进程能同时连接多少个 Socket? 要理解一个服务端进程能同时支持多少个连接,首先我们需要明确一个 socket 连接 的表示方式.一个连接由四个部分组成:[LocalIP:LocalPo ...

  9. 用触摸屏辅助3D建模

    现在在触摸屏上进行3D建模的软件很多,这里说的是另一个概念. 我的设想是将触摸屏当做一个带有 ViewPort 的输入设备. 比如 Blender 在建模时,我们可以通过一个外接的触摸屏从另一个角度观 ...

  10. bytecode 生成器

    基础 objectweb asm 很难用,找了几个高级点的. activej codegen 这个库很像 .net DLR 风格,采用 Expression 抽象,例如 Expressions.add ...