获取数据库列名、别名、类型等信息
一、前言
本次总结为:获取数据库表列名,别名,类型,列数,表名等相关信息。
现总结如下:
二、代码
/**
* 描述:获取数据库相关信息
* @author 猿医生
* @date 2018年10月31日
*
*/
public class ConnInfo {
public static void main(String[] args){
String sql = " select * from ord_base ";
// 用于调用存储过程:CallableStatement cs = null;
PreparedStatement cs = null;
ResultSetMetaData data = null;
ResultSet rs = null;
try {
// 用于调用存储过程:cs = JDBCUtils.getConnection("url","username","password").prepareCall(sql);
// 用于调用存储过程:cs.execute();
cs = JDBCUtils.getConnection("url","username","password").prepareStatement(sql);
rs = cs.executeQuery(sql);
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("数据库连接失败");
}
}
}
package com.chongdong.common.util;
import java.sql.*;
/**
* 描述:JDBC工具类
* 提供getConnection方法
* 提供close方法
* 开发步骤:
* 1.私有化构造函数,防止外界直接new对象
* 2.提供getConnection,用来对外界提供获取数据连接
* 3.提供close方法,用来关闭资源
*
* @author 猿医生
* @date 2018年10月31日
*
*/
public class JDBCUtils {
/** 数据库驱动 */
private final static String JDBC_DRIVER = "com.mysql.jdbc.Driver";
/**
* 私有化构造函数,防止外界直接new对象
*/
private JDBCUtils(){}
/**
* 获得Connection
* @param url:数据库连接地址
* @param username:用户名
* @param password:密码
* @return
*/
public static Connection getConnection(String url, String username, String password){
/** 数据库连接 */
Connection conn = null;
try{
/** 加载数据库驱动,注册到驱动管理器 */
Class.forName(JDBC_DRIVER);
/** 创建Connection连接,数据库连接参数:地址/用户名/密码 */
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/** 返回连接 */
return conn;
}
/**
* 关闭资源
* @param conn
* @param st
* @param rs
*/
public static void close(Connection conn, Statement st, ResultSet rs){
if(conn != null){
try {
/** 关闭资源 */
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
/** 保证资源一定会被释放 */
conn=null;
}
}
if(st != null){
try {
/** 关闭资源 */
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
/** 保证资源一定会被释放 */
st = null;
}
}
if(rs != null){
try {
/** 关闭资源 */
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
/** 保证资源一定会被释放 */
rs = null;
}
}
}
}
Now~~~写到这里,就写完了,如果有幸帮助到你,请记得关注我,共同一起见证我们的成长。
小结
谢谢观赏,我叫猿医生。
猿友推荐:正在奔跑的程序猿