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. 去掉Chrome手机版首屏的“推荐的文章”

    百度可得很多类似的文章,然而都是失效的,,比如此文,本文演示所使用的Chrome版本为59. 百度所得的解决办法都是同一个,排版,截图都是一样的,害我浪费了不少力气. 第一,转载文章未标明文章出处: ...

  2. ant脚本调用.bat文件

    build.xml内容如下: <project name="example" default="test"> <target name=&qu ...

  3. Java中应用多线程的场景?

    最典型的应用比如tomcat,tomcat内部采用的就是多线程,上百个客户端访问同一个web应用,tomcat接入后都是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用到我们的servlet程 ...

  4. [BZOJ1502]月下柠檬树(自适应辛普森积分)

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1387  Solved: 739[Submit][Status] ...

  5. [BZOJ 2425] 计数

    Link: BZOJ 2425 传送门 Solution: 其实就是利用数位$dp$的思想来暴力计数的一道题目 如果答案有$dgt$位,可以类似 [BZOJ 1833] 先计算出1至$dgt-1$位的 ...

  6. [Contest20180314]学习

    为了响应班级组团学习的要求,班主任xx将班上的$n$个同学编成了$m$个学习小组. 班长小r作为资深OI选手,他发现班级里存在一个可以量化的学习激♂情,并且这个激情跟组内成♀对的同学数量相关.若有$x ...

  7. 【单调队列】【动态规划】bzoj3831 [Poi2014]Little Bird

    f(i)=min{f(j)+(D(j)<=D(i))} (max(1,i-k)<=j<=i) 有两个变量,很难用单调队列,但是(引用): 如果fi<fj,i一定比j优秀.因为如 ...

  8. 【二分】bzoj2083 [Poi2010]Intelligence test

    v[x]记录了x值的出现位置序列. 对每个b中的元素,每次在v[b[i]]中二分. 因此要记录上一次二分到了a数组的哪个位置. #include<cstdio> #include<v ...

  9. 8.4(Java学习笔记)java脚本引擎(Rhino)

    一.java脚本引擎 java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言. 二.脚本引擎执行脚本代码 ScriptEngineManager:为Sc ...

  10. iOS计算富文本(NSMutableAttributedString)高度

    有时候开发中我们为了样式好看, 需要对文本设置富文本属性, 设置完后那么怎样计算其高度呢, 很简单, 方法如下: - (NSInteger)hideLabelLayoutHeight:(NSStrin ...