SELECT CASE WHEN a.colorder = 1 THEN d.name ELSE ' ' END AS 表名,
CASE WHEN a.colorder = 1 THEN isnull(f.value, ' ') ELSE ' ' END AS 表说明,
a.colorder AS 字段序号, a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id,
a.name, 'IsIdentity ') = 1 THEN '√ ' ELSE ' ' END AS 标识,
CASE WHEN EXISTS
(SELECT 1
FROM sysobjects
WHERE xtype = 'PK ' AND name IN
(SELECT name
FROM sysindexes
WHERE indid IN
(SELECT indid
FROM sysindexkeys
WHERE id = a.id AND colid = a.colid)))
THEN '√ ' ELSE ' ' END AS 主键, b.name AS 类型, a.length AS 占用字节数,
COLUMNPROPERTY(a.id, a.name, 'PRECISION ') AS 长度,
ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale '), 0) AS 小数位数,
CASE WHEN a.isnullable = 1 THEN '√ ' ELSE ' ' END AS 允许空, ISNULL(e.text, ' ')
AS 默认值, ISNULL(g.[value], ' ') AS 字段说明
FROM syscolumns a LEFT OUTER JOIN
systypes b ON a.xusertype = b.xusertype INNER JOIN
sysobjects d ON a.id = d.id AND d.xtype = 'U ' AND
d.name <> 'dtproperties ' LEFT OUTER JOIN
syscomments e ON a.cdefault = e.id LEFT OUTER JOIN
sysproperties g ON a.id = g.id AND a.colid = g.smallid LEFT OUTER JOIN
sysproperties f ON d.id = f.id AND f.smallid = 0
WHERE (d.name = 'cxda')
ORDER BY a.id, a.colorder
通过java查询数据库表结构
数据结构JavaOracleMySQLJDBC
//获取数据表结构
public static void getConnAndTableStruct(){
Connection connection = null;
PreparedStatement pstmt = null;
ResultSetMetaData rsmd = null;
try {
//mysql连接
Class.forName("org.gjt.mm.mysql.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "root");
//oracle连接
// Class.forName("oracle.jdbc.driver.OracleDriver");
// String url="jdbc:oracle:thin:@173.10.2.11:1521:test";
// connection=DriverManager.getConnection(url,"root","root");
pstmt = (PreparedStatement) connection.prepareStatement("select * from user");
pstmt.execute(); //这点特别要注意:如果是Oracle而对于mysql可以不用加.
rsmd = (ResultSetMetaData) pstmt.getMetaData();
className="User";
tableName="user";
for (int i = 1; i < rsmd.getColumnCount() + 1; i++) {
Table table=new Table();
table.setColumnName(rsmd.getColumnName(i));
table.setColumnType(rsmd.getColumnClassName(i).substring(rsmd.getColumnClassName
(i).lastIndexOf(".")+1));
tables.add(table);
System.out.println(rsmd.getColumnName(i)+ " " +rsmd.getColumnTypeName(i)
+" " +rsmd.getColumnClassName(i)+ " "+rsmd.getTableName(i));
}
}
catch (ClassNotFoundException cnfex) {
cnfex.printStackTrace();
}
catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}
注意:
ResultSetMetaData 对象可以用于查找 ResultSet 中的列的类型和特性。
方法索引
getCatalogName(int)
获得列的表的目录名。
getColumnCount()
获得 ResultSet 中的列数。
getColumnDisplaySize(int)
获得列的正常的最大字符宽度。
getColumnLabel(int)
获得打印输出和显示的建议列标题。
getColumnName(int)
获得列名。
getColumnType(int)
获得一个列的 SQL 类型。
getColumnTypeName(int)
获得一个列的数据源特定的类型名。
getPrecision(int)
获得一个列的十进制数字的位数。
getScale(int)
获得一个列的十进制小数点右面数字的位数。
getSchemaName(int)
获得一个列的表的模式。
getTableName(int)
获得列的表名。
isAutoIncrement(int)
列是否自动计数,因此它是只读的。
isCaseSensitive(int)
列是否区分大小写。
isCurrency(int)
列是否是通用的。
isDefinitelyWritable(int)
对列的写操作是否一定成功。
isNullable(int)
在该列中是否可以放一个 NULL 值。
isReadOnly(int)
列是否是不可写的。
isSearchable(int)
该列是否是可以查询的。
isSigned(int)
该列是否是有符号数。
isWritable(int)
对该列的写操作是否会成功。
没有合适的资源?快使用搜索试试~ 我知道了~
Query-table-structure.rar_Table
共1个文件
txt:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 98 浏览量
2022-09-22
21:52:19
上传
评论
收藏 2KB RAR 举报
温馨提示
sql语句查询一个表的表结构,并返回表结果和字段。
资源推荐
资源详情
资源评论
收起资源包目录
Query-table-structure.rar (1个子文件)
查询表结构.txt 4KB
共 1 条
- 1
资源评论
JonSco
- 粉丝: 77
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功