标签: database-metadata

如何获取MySQL中所有表的所有列的名称?

有没有快速的方法从所有表中获取所有列名MySQL,而不必列出所有表?

mysql database-metadata database-schema

173
推荐指数
8
解决办法
16万
查看次数

外键列表及其引用的表

我正在尝试查找一个查询,它将返回一个表的外键列表以及它们引用的表和列.我在那里一半

SELECT a.table_name, 
       a.column_name, 
       a.constraint_name, 
       c.owner
FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS C  
where A.CONSTRAINT_NAME = C.CONSTRAINT_NAME 
  and a.table_name=:TableName 
  and C.CONSTRAINT_TYPE = 'R'
Run Code Online (Sandbox Code Playgroud)

但我仍然需要知道此键引用了哪个表和主键.我怎么会这样?

oracle metadata database-metadata

129
推荐指数
7
解决办法
32万
查看次数

如何从数据库中获取所有表名?

我想从数据库模式中检索所有表名,如果可能的话,让所有表以指定的前缀开头.

我尝试使用JDBC,connection.getMetaData().getTables()但它根本不起作用.

Connection jdbcConnection = DriverManager.getConnection("", "", "");
DatabaseMetaData m = jdbcConnection.getMetaData();
ResultSet tables = m.getTables(jdbcConnection.getCatalog(), null, "TAB_%", null);
for (int i = 0; i < tables.getMetaData().getColumnCount(); i++) {
   System.out.println("table = " + tables.getMetaData().getTableName(i));
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

java database jdbc database-metadata

57
推荐指数
3
解决办法
14万
查看次数

从实体框架MetaData获取数据库表名称

我试图找到一种方法来获取给定实体类型的基础SQL表名称.我已经尝试过使用MetadataWorkspace查询,虽然我可以从对象或存储空间获取大量信息,但我似乎无法弄清楚如何在两者之间进行映射.

所以说我在对象模型中有一个名为Lookup的类型 - 如何在数据库中找到tablename(wws_lookups)?

我可以查询CSpace和SSpace的所有EntityType对象,我可以看到两者都正确列出,但我无法弄清楚如何从CSpace获取SSpace.

有没有办法做到这一点?

.net entity-framework database-metadata

48
推荐指数
8
解决办法
6万
查看次数

如何找出在Oracle中创建特定表的时间?

在Oracle中,有没有办法找出特定表的创建时间?

同样,有没有办法找出插入/最后更新特定行的时间?

oracle database-metadata oracle11g

39
推荐指数
3
解决办法
14万
查看次数

如何从Java中的ResultSetMetaData获取不同的数据类型?

我有一个ResultSet,返回不同类型的数据.查询是动态构造的,因此在编译时,我不知道查询将返回什么类型的值.

假设所有结果都是字符串,我编写了以下代码.但我也希望得到每个值的类型.我怎样才能做到这一点?

以下是我编写的代码.

while (reportTable_rst.next()) {
    String column = reportTable_rst.getString(columnIterator);
}
Run Code Online (Sandbox Code Playgroud)

此时,我想获取列类型,并根据数据类型获取值.

java metadata jdbc database-metadata

26
推荐指数
1
解决办法
7万
查看次数

JDBC DatabaseMetaData.getColumns()返回重复的列

我忙于编写一段代码来获取Oracle数据库中表的列名.我提出的代码如下所示:

DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection(
  "jdbc:oracle:thin:@<server>:1521:<sid>", <username>, <password>);

DatabaseMetaData meta = conn.getMetaData();
ResultSet columns = meta.getColumns(null, null, "EMPLOYEES", null);
int i = 1;
while (columns.next())
{
  System.out.printf("%d: %s (%d)\n", i++, columns.getString("COLUMN_NAME"), 
    columns.getInt("ORDINAL_POSITION"));
}
Run Code Online (Sandbox Code Playgroud)

当我把这个代码运行到我的意外时,返回了太多的列.仔细观察发现ResultSet包含所有列的重复集合,即每列返回两次.这是我得到的输出:

1: ID (1)
2: NAME (2)
3: CITY (3)
4: ID (1)
5: NAME (2)
6: CITY (3)
Run Code Online (Sandbox Code Playgroud)

当我使用Oracle SQL Developer查看表时,它显示该表只有三列(ID,NAME,CITY).我已经在我的数据库中对几个不同的表尝试了这个代码,有些工作得很好,而其他人则表现出这种奇怪的行为.

Oracle JDBC驱动程序中是否存在错误?或者我在这里做错了什么?


更新:感谢Kenster我现在有另一种方法来检索列名.您可以从ResultSet中获取它们,如下所示:

DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@<server>:1521:<sid>", <username>, <password>);

Statement st = conn.createStatement();
ResultSet rset = …
Run Code Online (Sandbox Code Playgroud)

java jdbc database-metadata

17
推荐指数
2
解决办法
4万
查看次数

Entity Framework entity is not in DataSpace.OSpace (_workspace.GetItemCollection(DataSpace.OSpace)) but is in DataSpace.CSpace

I have been mucking around with XMLs for entity Framework. I tried to create a type of entity that could have properties injected at runtime, First I created DynamicEntity object that is dynamic

public class DynamicEntity : DynamicObject
{
    Dictionary<string, object> dynamicMembers = new Dictionary<string, object>();

    public override bool TrySetMember(SetMemberBinder binder, object value)
    {
        dynamicMembers[binder.Name] = value;
        return true;
    }

    public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        if (dynamicMembers.TryGetValue(binder.Name, out result))
        {
            return dynamicMembers.TryGetValue(binder.Name, out result);
        } …
Run Code Online (Sandbox Code Playgroud)

c# workspace entity-framework database-metadata .net-4.5

15
推荐指数
1
解决办法
547
查看次数

如何从SELECT查询(而不是表)中显示COLUMNS?

运行以下内容时出现语法错误:

show columns from (select * from (select * from my_table) as T)
Run Code Online (Sandbox Code Playgroud)

如何从我编写的查询中显示列,而不是从表中显示?

java mysql database-metadata

14
推荐指数
3
解决办法
4996
查看次数

如何确定列是否未签名?

我目前正在尝试列出特定表的所有列,并确定每列是否未签名.

这是我的测试夹具的一个例子:

CREATE TABLE ttypes
(
    cbiginteger BIGINT UNSIGNED,
    cinteger INT UNSIGNED,
    csmallinteger SMALLINT UNSIGNED
) ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)

为了列出特定表的所有列,我发现了两种可能性:

SHOW FULL COLUMNS
FROM ttypes;
Run Code Online (Sandbox Code Playgroud)

根据文档,此查询返回以下字段:字段,类型,空,默认,额外和注释.它们都不允许我确定列是否未签名.

之后,我查看information_schema.columns哪个是SHOW COLUMNS查询使用的基表.

SELECT ...
FROM information_schema.columns
WHERE table_name = 'ttypes';
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有结果字段允许我确定列是否未签名.

mysql database-metadata

14
推荐指数
2
解决办法
4294
查看次数