如何获取数据库中表名、字段名、字段属性信息

如何获取数据库中表名、字段名、字段属性信息,第1张

如果是db2 的表名:

list tables

得到每一个表的详细信息字段名,字段属性(类型,文字长度,备注)

describe table 具体的表名

平时我就这么获得这些信息

public class TestDemo {

public static Connection getConnection() {

Connection conn = null;

try {

ClassforName("commysqljdbcDriver");

String url = "jdbc:mysql://localhost:3306/struts2Demo";

String user = "root";

String pass = "ncs-cyber_tj";

conn = DriverManagergetConnection(url, user, pass);

} catch (ClassNotFoundException e) {

eprintStackTrace();

} catch (SQLException e) {

eprintStackTrace();

}

return conn;

}

public static void main(String[] args) {

Connection conn = getConnection();

String sql = "select from AccessType";

PreparedStatement stmt;

try {

stmt = connprepareStatement(sql);

ResultSet rs = stmtexecuteQuery(sql);

ResultSetMetaData data = rsgetMetaData();

for (int i = 1; i <= datagetColumnCount(); i++) {

// 获得所有列的数目及实际列数

int columnCount = datagetColumnCount();

// 获得指定列的列名

String columnName = datagetColumnName(i);

// 获得指定列的列值

int columnType = datagetColumnType(i);

// 获得指定列的数据类型名

String columnTypeName = datagetColumnTypeName(i);

// 所在的Catalog名字

String catalogName = datagetCatalogName(i);

// 对应数据类型的类

String columnClassName = datagetColumnClassName(i);

// 在数据库中类型的最大字符个数

int columnDisplaySize = datagetColumnDisplaySize(i);

// 默认的列的标题

String columnLabel = datagetColumnLabel(i);

// 获得列的模式

String schemaName = datagetSchemaName(i);

// 某列类型的精确度(类型的长度)

int precision = datagetPrecision(i);

// 小数点后的位数

int scale = datagetScale(i);

// 获取某列对应的表名

String tableName = datagetTableName(i);

// 是否自动递增

boolean isAutoInctement = dataisAutoIncrement(i);

// 在数据库中是否为货币型

boolean isCurrency = dataisCurrency(i);

// 是否为空

int isNullable = dataisNullable(i);

// 是否为只读

boolean isReadOnly = dataisReadOnly(i);

// 能否出现在where中

boolean isSearchable = dataisSearchable(i);

Systemoutprintln(columnCount);

Systemoutprintln("获得列" + i + "的字段名称:" + columnName);

Systemoutprintln("获得列" + i + "的类型,返回SqlType中的编号:"

+ columnType);

Systemoutprintln("获得列" + i + "的数据类型名:" + columnTypeName);

Systemoutprintln("获得列" + i + "所在的Catalog名字:"

+ catalogName);

Systemoutprintln("获得列" + i + "对应数据类型的类:"

+ columnClassName);

Systemoutprintln("获得列" + i + "在数据库中类型的最大字符个数:"

+ columnDisplaySize);

Systemoutprintln("获得列" + i + "的默认的列的标题:" + columnLabel);

Systemoutprintln("获得列" + i + "的模式:" + schemaName);

Systemout

println("获得列" + i + "类型的精确度(类型的长度):" + precision);

Systemoutprintln("获得列" + i + "小数点后的位数:" + scale);

Systemoutprintln("获得列" + i + "对应的表名:" + tableName);

Systemoutprintln("获得列" + i + "是否自动递增:" + isAutoInctement);

Systemoutprintln("获得列" + i + "在数据库中是否为货币型:" + isCurrency);

Systemoutprintln("获得列" + i + "是否为空:" + isNullable);

Systemoutprintln("获得列" + i + "是否为只读:" + isReadOnly);

Systemoutprintln("获得列" + i + "能否出现在where中:"

+ isSearchable);

}

} catch (SQLException e) {

eprintStackTrace();

}

}

}

比较多,慢慢看,都可以获取。参考:百度知道。

>

import javasql;

import javautilArrayList;

import javautilHashtable;

import javautilList;public class Test{ public static void main(String[] args) throws Exception {

// 驱动

String driver = "commysqljdbcDriver";

// 数据库连接

String url = "jdbc:mysql://localhost:3306/test";

// 用户名

String user = "root";

// 数据库密码

String password = "admin";

// 加载驱动

ClassforName(driver);

// 获取链接

Connection connection = DriverManager

getConnection(url, user, password);

// 创建查询声明

PreparedStatement preparedStatement = connection

prepareStatement("select from dept");

// 获取结果

ResultSet resultSet = preparedStatementexecuteQuery();

// 获取各个列的信息

ResultSetMetaData metaData = resultSetgetMetaData();

// 一条数据保存在一个Hashtable 将所有Hashtable存放到list

List<Hashtable<String, Object>> rows = new ArrayList<Hashtable<String, Object>>();

while (resultSetnext()) {

Hashtable<String, Object> row = new Hashtable<String, Object>();

for (int i = 1; i <= metaDatagetColumnCount(); i++) {

// 打印列名

Systemoutprintln(metaDatagetColumnName(i));

rowput(metaDatagetColumnName(i), resultSetgetObject(i));

}

rowsadd(row);

}

resultSetclose();

preparedStatementclose();

connectionclose();

}}

下面为您介绍的是查询表的字段名的sql语句写法 sql语句可以实现许多的功能 希望可以您在学习sql语句使用方面获得启示

select name from syscolumns where id = (select id from sysobjects where type = u and name = 相应表名 )   或者   select name from syscolumns where id = object_id( 相应表名 )  用以上sql语句输入相应表名就可以查到表的字段名 对应好数据库 查询是否存在该表语句

而判断表名在数据库中是否存在的方法是

if not object_id( 相应表名 ) is null   print 存在   这次查询表中的字段名的目标是在写程序的时候需要写一点sql语句 但是表的字段太多了 如果一个一个去复制的话太慢了 而且有可能会复制漏了某个字段 所以利用自己数据库的知识 写了个sql语句直接生成字段名字符串 例如下面我要写一个select语句 需要生成表所有的字段

declare @s varchar( )   select @s = isnull(@s+ ) + [name] from syscolumns where id = object_id( 相应表名 )   select @s  获取字段名已经字段类型 类型长度

lishixinzhi/Article/program/MySQL/201311/29550

以上就是关于如何获取数据库中表名、字段名、字段属性信息全部的内容,包括:如何获取数据库中表名、字段名、字段属性信息、怎么获取表的字段名jdbc问题、java如何获得数据库表中各字段的字段名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9355565.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存