jdbc 表 meta data

2 篇文章 0 订阅

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();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值