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. [转]从此爱上iOS Autolayout

    原文地址 这篇不是autolayout教程,只是autolayout动员文章和经验之谈,在本文第五节友情链接和推荐中,我将附上足够大家熟练使用autolayout的教程.这篇文章两个月前就想写下来,但 ...

  2. C语言实现括号配对问题

    代码如下: #include<stdio.h> #include<string.h> #include<stdlib.h> // 写一个判断的括号是否匹配的函数 i ...

  3. Swift中计算String的长度

        extension String {     var length: Int { return countElements(self) }  // Swift 1.1 } extension ...

  4. (转)Android Eclipse 代码混淆

    为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,如果你不小心 ...

  5. nginx 隐藏index.php 并开启rewrite日志调试(apache也有)

    开启rewrite 日志 error_log       /data/log/nginx/error.log notice; 位于最外层,大约在文件的前几行 再在http{}括号里增加一行:rewri ...

  6. 调试手机上网页 (断点 console timeline 选择dom)

    用手机看网页,越来越多,手机app套个webview的也很多,那该如何调试手机上的页面了?比如 断点,选dom,console,控制台输出,查看内存,== 嗯,万能的的chrome和safari还是帮 ...

  7. C++11简要介绍

    概述  C++1x (本教程中指 C++11/14, 甚至 C++17) 为传统 C++ 注入的大量特性使得整个 C++ 变得更加像一门现代化的语言.C++1x 不仅仅增强了 C++ 语言自身的可用性 ...

  8. 14、高可用keepalived搭建及切换

    keepalived主从切换试验: 1.先搭建192.168.1.20与192.168.1.21的主主架构     192.168.1.76为VIP 2.在2机都安装keepalived  tar - ...

  9. Javascript高级程序设计 -- 第三章 -- 总结

    1.Javascript有几种数据类型 2.变量 Javascript有几种数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Nu ...

  10. 'telnet' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    Win7或者win8等是默认没有安装telnet功能,所以你直接用telnet命令是用不了的: 下面介绍在win8下面如何操作:“控制面板”-->“程序”(在左下角)-->程序和功能--- ...