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 ...
随机推荐
- 31、Django实战第31天:我的课程
1.编辑usercenter-mycourse.html继承usercenter-base.html 2.编辑users.views.py ... from operation.models impo ...
- 【字符串哈希】bzoj3098 Hash Killer II
教育我们做Rabin-Karp的时候一定要把模数取大?还是上溢好了. #include<cstdio> #include<cstdlib> using namespace st ...
- BUG The user specified as a definer ('root'@'%') does not exist' in
BUG描述:通过点击实现页面无刷新提交数据. 链接服务器数据库时-提交成功 当把数据库下载到本地后链接,提交失败 查看日志显示:The user specified as a definer ('ro ...
- canvas的一些问题记录
canvas当被设置width时,原来绘制的内容,将会清空.
- sql-server-on-linux-how-i-think-they-did-it : Anthony Nocentino's Blog
http://www.sqlservercentral.com/blogs/anthony-nocentinos-blog/2016/11/21/sql-server-on-linux-how-i-t ...
- XAMPP安装与多虚拟目录地址设置
前端开发集成环境-XAMPP 在前端开发中,经常需要进行请求的调试等都需要一个服务器环境,这时类似wamp.XAMPP就是我们最后的选择,集成apache.php.mysql等一应俱全,不需要去单独配 ...
- JAVA常见算法题(二十七)
题目:给定一个存放整数的数组,请写一个算法,把偶数移动到该数组的右边,奇数放在该数组的左边,请考虑时间和空间的最优算法. package com.forezp.util; /** * 题目:给定一个存 ...
- [Android Memory] Android性能测试小工具Emmagee
转载:http://blog.csdn.net/anlegor/article/details/22895993 Emmagee是网易杭州QA团队开发的用于测试指定android应用性能的小工具.该工 ...
- CMD/AMD的原理、区别和应用
有必要简单提一下两者的主要区别: 1.CMD推崇依赖就近,可以把依赖写进你的代码中的任意一行,例: define(function(require, exports, module) { var a ...
- Java调用Oracle存储过程
package com.hp.test; import java.sql.CallableStatement; import java.sql.Connection; import java.sql. ...