


Atitit. 数据库-catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc p.
Atitit. 数据库 -----catalog 与 schema 的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net
1 . -catalog 与 schema 的设计区别 1
2 . 获取数据库元信息的几种方法 2
2 .1. 直接读取元表 mysql 的 information_schema, mssql 的 SysDatabases 3
2 .2. 使用诸如 jdbc 等通用接口 3
2 .3. 使用数据库单独提供的驱动接口,比如 mysql 的 mysql_list_dbs 3
3 . 获取数据库 mysql 中的所有数据库列表 getCatalogs 3
3 .1. 遍历数据库所有数据库 3
3 .2. Php 版本 mysql_list_dbs() 4
3 .3. 。 Net 版本 SysDatabases 4
3 .4. 。 Net 版本 // 利用 OleDbConnection 的 GetOleDbSchemaTable 来获得数据库的结构 4
4 . 获取某个数据库的所有表 getTables 4
4 .1. Php 的实现 mysql_list_tables 5
4 .2. 。 N et版 读取 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. 。 N et版 读取 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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.
