Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net
Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net
2.1. 直接读取元表 mysql的 information_schema,mssql的SysDatabases3
2.3. 使用数据库单独提供的驱动接口,比如mysql的 mysql_list_dbs3
3. 获取数据库 mysql中的所有数据库列表getCatalogs3
3.4. 。Net版本 //利用OleDbConnection的GetOleDbSchemaTable来获得数据库的结构 4
4.1. Php的实现 mysql_list_tables5
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的更多相关文章
- 数据库-----catalog与schema简介
在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题 一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表 ...
- Delphi中客户端获取数据库更新信息(更新条数)
1.SQL语句 from tb where xxx='XXX') //不存在,则插入数据 begin insert into tb(xxx) values('XXX') //这里自己定义,插入或更新都 ...
- 数据库水平拆分和垂直拆分区别(以mysql为例)
数据库水平拆分和垂直拆分区别(以mysql为例) 数据库水平拆分和垂直拆分区别(以mysql为例) 案例: 简单购物系统暂设涉及如下表: 1.产品表(数据量10w,稳定) 2.订单表(数据 ...
- Odoo中连接mysql数据库
how to integrate Odoo with MySQL - Stack Overflowhttps://stackoverflow.com/questions/31959919/how-to ...
- 利用workbench对linux/Ubuntu系统中的mysql数据库进行操作
在上一篇文章中,我分享了在linux中如何安装mysql数据库,但是这只是安装了mysql的服务,并没有图形化管理界面,所以这样子操作起来并没有那么方便,那么现在我们就来实现如何利用在window中安 ...
- .NET Core 获取数据库上下文实例的方法和配置连接字符串
目录 .NET Core 获取数据库上下文实例的方法和配置连接字符串 ASP.NET Core 注入 .NET Core 注入 无签名上下文 OnConfigure 配置 有签名上下文构造函数和自己n ...
- android中的SQLite数据库
SQLite是android中集成的一个轻量级的数据库,该数据库支持绝大部分SQL92语法 SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQ ...
- Atitit.收银机小票打印功能的设计 java php c#.net版本
Atitit.收银机小票打印功能的设计 java php c#.net版本 1. 1. 打印方式有4种:1 1.1. 1.1. 一是不经过任何修改,直接调用javascript中的window.pr ...
- Atitit 修改密码的功能流程设计 attilax总结
Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...
随机推荐
- C++ 对象的内存布局【转】
单一继承: 虚函数表在最前面的位置. 成员变量根据其继承和声明顺序依次放在后面. 在单一的继承中,被overwrite的虚函数在虚函数表中得到了更新. 多重继承 每个父类都有自己的虚表. 子类的成员函 ...
- 【点分治】hdu5016 Mart Master II
点分治好题. ①手动开栈. ②dp预处理每个点被哪个市场控制,及其距离是多少,记作pair<int,int>数组p. ③设dis[u].first为u到重心s的距离,dis[u].seco ...
- react-native热更新从零到成功中的各种坑
https://github.com/reactnativecn/react-native-pushy/blob/master/docs/guide.md Android NDK暂时没有安装 在你的项 ...
- python3开发进阶-Django框架的中间件的五种用法和逻辑过程
阅读目录 什么是中间件 中间件的执行流程 中间件的逻辑过程 一.什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围 ...
- Bean实例化(三种方法)
(一)构造器实例化Bean 1. Bean1.java package com.inspur.ioc; public class Bean1 { } 2.Beans1.xml <?xml ver ...
- 使用ASP.Net WebAPI构建REST服务(七)——调试工具
由于WebAPI本身是基于HTTP协议的,在开发过程中,我们可以使用浏览器或Fiddler等HTTP工具辅助开发.与此同时,微软也提供了一些工具方便我们调试,使得开发更加简单快捷,本文就简单的介绍一下 ...
- HTTP协议下保证登录密码不被获取最健壮方式
原文:http://www.cnblogs.com/intsmaze/p/6009648.html HTTP协议下保证登录密码不被获取最健壮方式 说到在http协议下用户登录如何保证密码安全这个问 ...
- 一、ELKStack介绍与入门实践
第1章 ELKStack 对于日志来说,最常见的需求就是收集.存储.查询.展示,开源社区正好有相对应的开源项目:logstash(收集).elasticsearch(存储+搜索).kibana(展示) ...
- 【译】你对position的了解有多少?
此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...
- solr6.6 配置自带中文分词
1.配置solrconfig.xml solr的自带中文分词包在solr-6.6.0\contrib\analysis-extras\lucene-libs下 修改solrconfig.xml增加 & ...