JDBC如何获得数据库的约束信息
发布网友
发布时间:2022-04-07 16:03
我来回答
共1个回答
热心网友
时间:2022-04-07 17:32
以MySQL5为例,看看实现过程:
首先为了描述表和列的关系,必须做个简单建模:
表对象、列对象,之间是一对多关系。
public class TableInfoBean {
private String tableName;
private String tableComment;
private List<ColumnBean> columnList=new ArrayList<ColumnBean>();
public class ColumnBean {
private String columnName;
private String columnComment;
private String SqlType;
这个关系很简单,就这么搞定了,用来保存一个表信息。
下面就是如何从数据库读取表信息了。
在这里依赖一个类DatabaseMetaData,这个对象可以从数据库连接来获取。有了它万事大吉了,想知道什么问它即可:
DatabaseMetaData databaseMetaData = conn.getMetaData();
//获取所有表
ResultSet tableSet = databaseMetaData.getTables(null, "%", "%", new String[]{"TABLE"});
//获取tableName表列信息
ResultSet columnSet = databaseMetaData.getColumns(null, "%", tableName, "%");
上面代码会得到两个结果集,对照DatabaseMetaData 的文档,我们可以通过结果集的列名来获取想要的信息,例如
String tableName = tableSet.getString("TABLE_NAME");
String tableComment = tableSet.getString("REMARKS");
String columnName = columnSet.getString("COLUMN_NAME");
String columnComment = columnSet.getString("REMARKS");
String sqlType = columnSet.getString("DATA_TYPE");
含义很清楚我就不做解释了。
逐个遍历表,然后得到一个TableInfoBean的集合,这个集合就是数据库中所有表的信息了