Atitit. 数据库—–catalog跟schema的统筹区别及在实质上中使用 获取数据库有库表 java jdbc php  c#.Net

Atitit. 数据库—–catalog和schema的计划区别与当实际中采用 获取数据库有库表 java jdbc php  c#.Net

 

1. -catalog与schema的统筹区别1

2. 获取数据库元信息之几栽方式2

2.1. 直接读取元表 mysql的 information_schema,mssql的SysDatabases3

2.2. 施用如jdbc等通用接口3

2.3. 行使数据库单独供的叫接口,比如mysql的 mysql_list_dbs3

3. 获取数据库 mysql中的装有数据库列表getCatalogs3

3.1. 遍历数据库有数据库3

3.2. Php版本mysql_list_dbs()4

3.3. 。Net版本  SysDatabases4

3.4. 。Net版本 //利用OleDbConnection的GetOleDbSchemaTable来取数据库的构造 4

4. 沾有数据库的所有表getTables4

4.1. Php的实现 mysql_list_tables5

4.2. 。Net版 读取SysObjects 表5

5. 参考5

 

 

 

1. -catalog与schema的设计区别

 

遵照SQL标准的诠释,在SQL环境下Catalog和Schema都属于抽象概念,可以拿它们知道吧一个器皿或者数据库对象命名空间被之一个层次,主要用来缓解命名冲突问题。从概念上说,一个数据库系统包含多只Catalog,每个Catalog又富含多独Schema,而每个Schema又噙多个数据库对象(表、视图、字段等),反过来讲一个数据库对象自然属于一个Schema,而该Schema又一定属于一个Catalog,这样我们不怕可取得该数据库对象的一点一滴限定名称从而缓解命名冲突的题材了;例如数据库对象表的通通限定名称即使可代表也:Catalog名称.Schema名称.表名称。这里还有少数需要小心的是,SQL标准并无要求每个数据库对象的意限定名称是绝无仅有的,就象域名相同,如果爱的口舌,每个IP地址都可以享多只域名。

    从贯彻的角度来拘禁,各种数据库系统针对Catalog和Schema的支持及落实方式差异,针对现实问题亟待参考具体的产品说明,比较简单而常用的贯彻方式是运用数据库名作为Catalog名,使用用户称当Schema名,具体而参见下表:

发明1 常用数据库

 

供应商

Catalog支持

Schema支持

Oracle

不支持

Oracle User ID

MySQL

不支持

数据库名

MS SQL Server

数据库名

对象属主名,2005版开始有变

DB2

指定数据库对象时,Catalog部分省略

Catalog属主名

Sybase

数据库名

数据库属主名

Informix

不支持

不需要

PointBase

不支持

数据库名

 

 

 

笔者:: 绰号:老哇的爪子 ( 全名::Attilax akbar al rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

 

 

脚就是是哪由数据库读取表信息了。

每当此指一个类DatabaseMetaData,这个目标可以从数据库连接来得到。有矣她万事大吉了,想明白呀问它即可:

DatabaseMetaData databaseMetaData = conn.getMetaData();

 

        //获取所有表
        ResultSet tableSet = databaseMetaData.getTables(null, “%”, “%”, new String[]{“TABLE”});

        //获取tableName表列信息
        ResultSet columnSet = databaseMetaData.getColumns(null, “%”, tableName, “%”);

 

 

2. 获取数据库元信息的几乎种植方式

2.1. 一直读取元表 mysql的 information_schema,mssql的SysDatabases 

2.2. 以诸如jdbc等通用接口

2.3. 使数据库单独供的让接口,比如mysql的 mysql_list_dbs

 

 

3. 获取数据库 mysql中之具备数据库列表getCatalogs

3.1. 遍历数据库有数据库

 

[

  {“TABLE_CAT”: “information_schema”},

  {“TABLE_CAT”: “8kbl”},

  {“TABLE_CAT”: “atiposdb”},

  {“TABLE_CAT”: “cyar”},

  {“TABLE_CAT”: “ecmdb”},

  {“TABLE_CAT”: “hxtaxi”},

  {“TABLE_CAT”: “iwbm2”},

  {“TABLE_CAT”: “iwmshop”},

  {“TABLE_CAT”: “iwmshopnow”},

  {“TABLE_CAT”: “limesurvey”},

  {“TABLE_CAT”: “mysql”},

  {“TABLE_CAT”: “performance_schema”},

  {“TABLE_CAT”: “shopedb”},

  {“TABLE_CAT”: “shopnc”},

  {“TABLE_CAT”: “test”},

  {“TABLE_CAT”: “timerdb”},

  {“TABLE_CAT”: “vod2”},

  {“TABLE_CAT”: “wechatdb”},

  {“TABLE_CAT”: “wordpress”},

  {“TABLE_CAT”: “wxb_site_new”},

  {“TABLE_CAT”: “wxmiqi”},

  {“TABLE_CAT”: “zuche5”}

]

 

getSchemas是空的。。

 

3.2. Php版本mysql_list_dbs()

$dbs = mysql_list_dbs(); //调用mysql_list_dbs函数 

 

3.3. 。Net版本  SysDatabases 

1.取得具有数据库名: 
   (1)、Select Name FROM Master.dbo.SysDatabases orDER BY Name 

 

3.4. 。Net版本 //利用OleDbConnection的GetOleDbSchemaTable来取数据库的组织 

 

4. 获取有数据库的兼具表getTables

 

DatabaseMetaData dbmd = dbx.getConnection().getMetaData();

// databaseMetaData.getColumns(localCatalog, localSchema,

// localTableName, null);

ResultSet rs =dbmd.getTables(“atiposdb”, “%”, “%”, new String[]{“TABLE”});

 

[

    {

    “TABLE_NAME”: “applications”,

    “REMARKS”: “”,

    “TABLE_TYPE”: “TABLE”,

    “TABLE_SCHEM”: null,

    “TABLE_CAT”: “atiposdb”

  },

    {

    “TABLE_NAME”: “attribute”,

    “REMARKS”: “”,

    “TABLE_TYPE”: “TABLE”,

    “TABLE_SCHEM”: null,

    “TABLE_CAT”: “atiposdb”

  },

 

4.1. Php的实现 mysql_list_tables

(PHP 3, PHP 4 , PHP 5)

mysql_list_tables — 列出 MySQL 数据库中之阐发

 

4.2. 。Net版 读取SysObjects 表

2.得有表名: 
   (1)、Select Name FROM SysObjects Where XType=’U’ orDER BY Name 

 

 

 

 

5. 参考

asp.net获取SQL所发生数量库名、所有表名、所有字段名、列描述 – XMM_1030底专栏 – 博客频道 – CSDN.NET.htm

.NET 获取数据库中存有表名的不二法门(转载) – guoxuefeng – 博客园.htm

ODBC, OLEDB, ADO, ADO.Net的演变简史 – BobLiu – 博客园.htm

 

网站地图xml地图