JDBC(九)DatabaseMetaData 數據庫元數據

通過java.sql.DatabaseMetaData 接口,我們能獲取到數據庫的列表、列等信息。

DatabaseMetaData 接口包含了許多方法,這里值介紹常用的。

###獲取 DatabaseMetaData 實例對象

DatabaseMetaData databaseMetaData = connection.getMetaData();
復制代碼

###獲取數據庫名和版本

int    majorVersion   = databaseMetaData.getDatabaseMajorVersion();
int    minorVersion   = databaseMetaData.getDatabaseMinorVersion();String productName    = databaseMetaData.getDatabaseProductName();
String productVersion = databaseMetaData.getDatabaseProductVersion();
復制代碼
數據庫屬性信息:5 6 MySQL 5.6.24
復制代碼

###獲取數據庫驅動版本

int driverMajorVersion = databaseMetaData.getDriverMajorVersion();
int driverMinorVersion = databaseMetaData.getDriverMinorVersion();
復制代碼

###獲取數據庫列表

String   catalog          = null;
String   schemaPattern    = null;
String   tableNamePattern = null;
String[] types            = null;ResultSet result = databaseMetaData.getTables(catalog, schemaPattern, tableNamePattern, types );while(result.next()) {String tableName = result.getString(3);
}
復制代碼

getTables()方法源碼:

    ResultSet getTables(String catalog, String schemaPattern,String tableNamePattern, String types[]) throws SQLException;
復制代碼

我在這里給四個參數都賦值null,則它會把所有數據庫中的表信息 返回。

此ResultSet包含10列,每列包含有關給定表的信息。 索引3指的是表名稱。

user
復制代碼

###在表中列出列

String   catalog           = null;
String   schemaPattern     = null;
String   tableNamePattern  = "user";
String   columnNamePattern = null;ResultSet result = databaseMetaData.getColumns(catalog, schemaPattern,  tableNamePattern, columnNamePattern);while(result.next()){String columnName = result.getString(4);int    columnType = result.getInt(5);
}
復制代碼

getColumns()方法返回的ResultSet包含給定表的列的列表。 索引為4的列包含列名稱,索引為5的列包含列類型。 列類型是一個與java.sql.Types中的類型常量匹配的整數。

id 4 
username 12 
birthday 91 
sex 1 
address 12 
復制代碼

###表的主鍵

String   catalog   = null;
String   schema    = null;
String   tableName = "user";ResultSet result = databaseMetaData.getPrimaryKeys(catalog, schema, tableName);while(result.next()){String columnName = result.getString(4);
}
復制代碼

調用getPrimaryKeys()方法,向其傳遞3個參數。 在這個例子中,只有tableName是非空的。

getPrimaryKeys()方法返回的ResultSet包含組成給定表主鍵的列表。 索引4指的是的列名稱。

主鍵可以由多個列組成。 這樣的密鑰被稱為復合密鑰。 如果表包含復合鍵,則ResultSet將包含多行。 復合鍵中的每一列都有一行。

id
復制代碼

###全部代碼

package com.jdbc;import java.sql.*;/*** Created by Fant.J.* 2018/3/5 21:38*/
public class DatabaseMetaDataTest {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/user";String user = "root";String password = "root";Connection connection =null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(url,user,password);DatabaseMetaData databaseMetaData = connection.getMetaData();int    majorVersion   = databaseMetaData.getDatabaseMajorVersion();int    minorVersion   = databaseMetaData.getDatabaseMinorVersion();String productName    = databaseMetaData.getDatabaseProductName();String productVersion = databaseMetaData.getDatabaseProductVersion();System.out.println("數據庫屬性信息:"+majorVersion+" "+minorVersion+" "+productName+" "+productVersion);int driverMajorVersion = databaseMetaData.getDriverMajorVersion();int driverMinorVersion = databaseMetaData.getDriverMinorVersion();System.out.println("驅動信息:"+driverMajorVersion+" "+driverMinorVersion);/*            String   catalog          = null;String   schemaPattern    = null;String   tableNamePattern = null;String[] types            = null;ResultSet result = databaseMetaData.getTables(catalog, schemaPattern, tableNamePattern, types );while(result.next()) {String tableName = result.getString(3);System.out.println(tableName);}*//*           String   catalog           = null;String   schemaPattern     = null;String   tableNamePattern  = "user";String   columnNamePattern = null;ResultSet result = databaseMetaData.getColumns(catalog, schemaPattern,  tableNamePattern, columnNamePattern);while(result.next()){String columnName = result.getString(4);int    columnType = result.getInt(5);System.out.println(columnName+" "+columnType+" ");}*/String   catalog   = null;String   schema    = null;String   tableName = "user";ResultSet result = databaseMetaData.getPrimaryKeys(catalog, schema, tableName);while(result.next()){String columnName = result.getString(4);System.out.println(columnName);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}
}復制代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255100.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255100.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255100.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++多線程(一)

C多線程&#xff08;一&#xff09; WIN 多線程API一 簡單實例比較簡單的代碼&#xff0c;創建10個線程&#xff0c;其中使第4個線程在一創建就掛起&#xff0c;等到其他的線程執行的差不多的時候再使第4個線程恢復執行。#include <stdio.h>#include <stdlib.h>#i…

HALCON示例程序measure_ball_bond.hdev電路板焊點位置測量

HALCON示例程序measure_ball_bond.hdev電路板焊點位置測量 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () dev_close_window () FileName : ‘bonds/ball_bond_ccd_’ read_image (Image, FileName 1$‘02’) dev_open_window_fit_imag…

rank()over 函數的使用

1. over()是分析函數&#xff0c;可以和rank()函數配合使用&#xff0c;也可以和其他函數配合使用。取每個學科排名前三的分數&#xff0c;sql語句如下&#xff1a; select * from (select rank() over(partition by subject order by mark desc) rk,S.* from S) T where T.rk&…

天梯賽2016-L2

L2-001. 緊急救援 作為一個城市的應急救援隊伍的負責人&#xff0c;你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連接城市的快速道路。每個城市的救援隊數量和每一條連接兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助電話給你的時候&#xff0c;你…

伺服系統控制網絡的重要性! 現場總線的重要性! SSCNET運動控制系統與發展趨勢

引言&#xff1a;在2010年的時候&#xff0c;在北京的一個數控公司工作。產品采用的是通過運動控制卡發脈沖的方式&#xff0c;控制機床的X、Y、Z軸進行加工。 機床在加工產品的時候&#xff0c;一直存在著精度的問題&#xff0c;例如DMG的機床可以達到0.01的加工精度&#x…

apache配置

wamp環境安裝需要VC運行庫的支持 apache如果需要外網訪問&#xff0c;在其配置文件中尋找127.0.0.1然后替換為all 外網訪問需要關閉防火墻&#xff1f;轉載于:https://www.cnblogs.com/gremlin/p/5581486.html

TCP/IP 通信示例

TCP/IP 通信示例 Global String ReadData_P_All$, ReadData_P$(10), data$ Global Preserve Double x Global Integer foundnumber_PFunction TCPServerSetNet #201, "192.168.0.1", 4000, CRLF, NONE, 0OpenNet #201 As ClientWaitNet #201Print "TCP Connect…

MySQL分庫分表總結參考

單庫單表 單庫單表是最常見的數據庫設計&#xff0c;例如&#xff0c;有一張用戶(user)表放在數據庫db中&#xff0c;所有的用戶都可以在db庫中的user表中查到。 單庫多表 隨著用戶數量的增加&#xff0c;user表的數據量會越來越大&#xff0c;當數據量達到一定程度的時候對u…

小兔伴伴家庭動物園AR智能早教產品上市

2016年6月&#xff0c;經過樂卓大家庭所有人的共同努力&#xff0c;公司旗下首款新品——小兔伴伴之《家庭動物園》3D智能學習卡正式面世。 每個孩子都應該在合適的時間去體驗豐富的聲音、色彩和動作&#xff0c;《家庭動物園》&#xff0c;專為2-6歲兒童貼心設計&#xff0c;是…

EPSON 自帶CCD圖像處理包使用舉例

EPSON 機器人可以購買CCD圖像處理包選項&#xff0c;CCD圖像處理包與SPEL語言高度結合&#xff0c;可以非常快的將項目投入應用&#xff0c;舉例說明CCD圖像處理包與SPEL的聯合使用。 EPSON 以視覺序列定義圖像處理的一個項目&#xff0c;視覺序列是一組按照特定順序排列的視覺…

索引使用原則

前兩篇文章我總結了一些SQL數據庫索引的問題&#xff0c;這篇主要來分析下索引的優缼點&#xff0c;以及如何正確使用索引。 索引的優點&#xff1a;這個顯而易見&#xff0c;正確的索引會大大提高數據查詢&#xff0c;對結果進行排序、分組的操作效率。 索引的缺點…

根據時間變換頁面背景

1.概述 有些時侯為了豐富頁面的顯示效果&#xff0c;將頁面制作成根據時間變換頁面背景的樣式&#xff0c;這樣會使瀏覽者對此網站不會感覺厭倦&#xff0c;同時也會覺得網站制作的非常新穎。本實例通過Date對象的getHours()方法獲得當前系統時間的小時&#xff0c;然后根據不同…

EPSON 自帶CCD圖像處理包的典型應用框架

EPSON 自帶CCD圖像處理包的典型應用框架 Function main ******************************************** Very important statement below: Use the * //非常重要的是在實際運行時&#xff0c;用合適的Z數值代替預定義的 ZHeight 。Z height which you wrote down earlier in *…

EPSON 利用CCD圖像處理包標定工具坐標系

EPSON 利用CCD圖像處理包標定工具坐標系 仰視式安裝的相機可以用來計算工具偏移&#xff0c;下例使用仰視式相機來計算工具偏移。該功能首先運行一個序列來定位工具的尖端。然后計算出工具偏移&#xff08;前提是CCD已標定&#xff09;。 Function CalcTool Boolean foundReal…

掛馬方式研究、掛馬檢測技術研究

1. 掛馬定義 所謂的掛馬&#xff0c;就是黑客通過各種手段&#xff0c;包括SQL注入&#xff0c;網站敏感文件掃描&#xff0c;服務器漏洞&#xff0c;網站程序0day, 等各種方法獲得網站管理員賬號&#xff0c;然后登陸網站后臺&#xff0c;通過數據庫"備份/恢復"或者…

大幅面多相機高精度定位及測量解決方案

隨著機器視覺應用的日益廣泛&#xff0c;大幅面多相機視覺系統的需求越來越多&#xff0c;主要應用方向為大幅面高精度的定位與測量和場景拼接等。多相機視覺系統的難點在于多相機坐標系的統一&#xff0c;可以分為兩類&#xff0c;一是相機視野間無重疊部分&#xff0c;二是相…

Hadoop 使用FileSystem API 讀取數據

代碼&#xff1a; package com.hadoop;import java.io.IOException; import java.io.InputStream; import java.net.URI;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.…

EPSON 機器人多任務下的互鎖處理

在很多時候&#xff0c;有多個任務具有動作命令指令。為了防止多個任務運行動作命令時&#xff0c;對僅有的一個機器人產生的控制沖突&#xff0c;有必要進行連鎖處理。一個任務進行機器人控制時&#xff0c;另一個任務則會等待控制權。這樣&#xff0c;各任務就可以完全按照預…

mysql高可用方案MHA介紹

mysql高可用方案MHA介紹概述MHA是一位日本MySQL大牛用Perl寫的一套MySQL故障切換方案&#xff0c;來保證數據庫系統的高可用.在宕機的時間內&#xff08;通常10—30秒內&#xff09;&#xff0c;完成故障切換&#xff0c;部署MHA&#xff0c;可避免主從一致性問題&#xff0c;節…