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

Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net的更多相关文章

  1. 数据库-----catalog与schema简介

    在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题 一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表 ...

  2. Delphi中客户端获取数据库更新信息(更新条数)

    1.SQL语句 from tb where xxx='XXX') //不存在,则插入数据 begin insert into tb(xxx) values('XXX') //这里自己定义,插入或更新都 ...

  3. 数据库水平拆分和垂直拆分区别(以mysql为例)

    数据库水平拆分和垂直拆分区别(以mysql为例) 数据库水平拆分和垂直拆分区别(以mysql为例)   案例:     简单购物系统暂设涉及如下表: 1.产品表(数据量10w,稳定) 2.订单表(数据 ...

  4. Odoo中连接mysql数据库

    how to integrate Odoo with MySQL - Stack Overflowhttps://stackoverflow.com/questions/31959919/how-to ...

  5. 利用workbench对linux/Ubuntu系统中的mysql数据库进行操作

    在上一篇文章中,我分享了在linux中如何安装mysql数据库,但是这只是安装了mysql的服务,并没有图形化管理界面,所以这样子操作起来并没有那么方便,那么现在我们就来实现如何利用在window中安 ...

  6. .NET Core 获取数据库上下文实例的方法和配置连接字符串

    目录 .NET Core 获取数据库上下文实例的方法和配置连接字符串 ASP.NET Core 注入 .NET Core 注入 无签名上下文 OnConfigure 配置 有签名上下文构造函数和自己n ...

  7. android中的SQLite数据库

    SQLite是android中集成的一个轻量级的数据库,该数据库支持绝大部分SQL92语法 SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQ ...

  8. Atitit.收银机小票打印功能的设计  java php c#.net版本

    Atitit.收银机小票打印功能的设计  java php c#.net版本 1. 1. 打印方式有4种:1 1.1. 1.1. 一是不经过任何修改,直接调用javascript中的window.pr ...

  9. Atitit 修改密码的功能流程设计 attilax总结

    Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...

随机推荐

  1. CentOS 7安装tensorflow 1.6

    pip3 install tensorflow-gpu==1.6 1.6 依赖于cuda 9.0 cuDNN 7,并且前提需要下载和安装nvidia驱动. 安装驱动 nvidia 驱动地址: http ...

  2. 19、Flask实战第19天:CSRF攻击与防御

    CSRF攻击原理 网站是通过cookie来实现登录功能的.而cookie只要存在浏览器中,那么浏览器在访问这个cookie的服务器的时候,就会自动的携带cookie信息到服务器上去.那么这时候就存在一 ...

  3. 【数论】【素数判定】CODEVS 2851 菜菜买气球

    素数判定模板. #include<cstdio> #include<map> using namespace std; ],ans=-,l,r,n,sum[]; bool is ...

  4. 【块状树】bzoj3731 Gty的超级妹子树

    带 加点 删边的块状树. 加点在 bzoj3720 说过. 删边其实就是块顶打标记,记录其属于哪棵树,防止在dfs搜集答案时跑到别的树上. 然后暴力把所在块拆开. 好像用邻接表存图,直接在vector ...

  5. 【Splay】【块状链表】bzoj3223 Tyvj 1729 文艺平衡树

    让蒟蒻见识到了常数大+滥用STL的危害. <法一>很久之前的Splay #include<cstdio> #include<algorithm> using nam ...

  6. Scala学习总结

    1)将Array转化为String,toStrings()方法应该是序列化了的. scala> val args = Array("Hello", "world&q ...

  7. GAILS里面的SAVE方法

    用途 保存一个domain类的实例到数据库,需要的话会级联保存所有的子实例. 举例 def b = new Book(title:"The Shining") b.save() 描 ...

  8. B/S架构 Web打印程序(Argox)

    B/S架构 Web打印程序 对于B/S架构下的管理软件系统,在客户端浏览器页面中如何透过本地打印机或网络打印机打印条码标签,Argox提供最常用的2种类型打印机集成方案. ●  PPLA 打印机IE游 ...

  9. Word调整表格大小

    在Word文档中创建表格后,用户往往需要根据输入的内容调整表格的行高和列宽,有时也需要对整个表格的大小进行调整. 在选择的表格上右击,选择快捷菜单中的“自动调整”—“根据内容调整表格”命令,Word将 ...

  10. 7zip File: How to Uncompress 7z files on Ubuntu, Debian, Fedora

    转:http://www.thegeekstuff.com/2010/04/7z-7zip-7za-file-compression/ Question: How do I uncompress a ...