1.이 개체의 인스턴스를 얻으십시오
Connection Con; con = driverManager.getConnection (URL, 사용자 이름, 암호); DatabAsemetAdata dbmd = con.getMetadata ();
2. 메소드 사용 gettables 사용
원기:
resultset databasemetadata.gettables (문자열 카탈로그, 문자열 스키마, 문자열 tablename, String [] type)
이 메소드는 결과 세트에 5 개의 열이있는 결과 세트 세트 세트를 반환 할 수 있습니다. 경계를 초과하면 바운드 외 예외 가보고됩니다.
기능 설명 : 지정된 매개 변수의 테이블 정보 가져 오기
매개 변수 설명 :
매개 변수 : 카탈로그 : 디렉토리 이름, 일반적으로 비어 있습니다.
매개 변수 : 스키마 : Oracle 사용자 이름의 데이터베이스 이름 : tablemename : 테이블 이름 매개 변수 : 유형 : 테이블 유형 (테이블 |보기)
참고 : 사용하는 동안 매개 변수 이름은 자본에 있어야합니다. 그렇지 않으면 당신은 무언가를 얻습니다.
3. 방법 getcolumns 사용
함수 설명 : 지정된 표의 열 정보를 가져옵니다.
원기:
resultset databasemetadata getColumns (문자열 카탈로그, 문자열 스키마, 문자열 테이블 이름, 문자열 열 이름)
매개 변수 설명 :
매개 변수 카탈로그 : 카테고리 이름 매개 변수 스키마 : 사용자 체계 이름 매개 변수 Tablemename : 데이터베이스 테이블 이름 매개 변수 열 이름 : 열 이름
4. GetPrimarykeys 사용 방법
기능 설명 : 지정된 표의 주요 키 정보를 가져옵니다.
원기:
resultset databasemetadata getPrimaryKeys (문자열 카탈로그, 문자열 스키마, 문자열 tableName)
매개 변수 설명 :
매개 변수 카탈로그 : 카테고리 이름 매개 변수 스키마 : 사용자 체계 이름 매개 변수 Tablemename : 데이터베이스 테이블 이름
참고 : 테이블 이름을 지정하십시오. 그렇지 않으면 반환 값에 아무것도 없습니다.
5. gettypeinfo ()의 방법.
기능 설명 : 현재 데이터베이스의 데이터 유형 정보를 가져옵니다.
6. GetExportedKeys 사용 방법
기능 설명 : 지정된 표에 대한 외국 키 정보를 얻습니다.
매개 변수 설명 :
매개 변수 카탈로그 : 카테고리 이름 매개 변수 스키마 : 사용자 체계 이름 매개 변수 Tablemename : 데이터베이스 테이블 이름
MySQL과 Oracle을 예제로 사용 하여이 두 매개 변수를 설명해 봅시다.
Oracle 및 MySQL 데이터의 조직 구조는 완전히 다릅니다. 직관적 인 외관 측면에서 테이블과보기를 부착하는 방법은 다릅니다. Oracle에서는 사용자 관리 메커니즘이 채택됩니다. 특정 사용자에게 테이블과 뷰가 첨부되면 사용자는 Oracle의 "스키마"가됩니다. MySQL에서는 테이블과 뷰가 데이터베이스에 직접 첨부됩니다. 이런 식으로, Oralce에서 카탈로그를 얻는 것은 null이 얻어지고 스키마를 얻는 것은 사용자 이름의 목록입니다. MySQL에서 얻은 카탈로그는 데이터베이스 이름 목록이고 스키마는 NULL입니다. 독자는 DatabasemetAdata에서 제공 한 다음 두 가지 방법을 테스트 할 수 있으며 결과 세트 데이터 유형을 모두 반환 할 수 있습니다.
// 카테고리 정의를 가져옵니다
rs = dbmd.getCatalogs ();
// 패턴 정의를 가져옵니다
rs = dbmd.getSchemas ();
위의 분석을 기반으로 :
데이터베이스가 MySQL 인 경우 첫 번째 매개 변수 카탈로그는 데이터베이스 이름 일 수 있습니다. 이 항목이 null이면 URL 문자열에 지정된 데이터베이스 이름과 두 번째 매개 변수 스키마가 NULL을 채우십시오.
데이터베이스가 Oralce 인 경우 : 첫 번째 매개 변수 카탈로그는 NULL이면 두 번째 매개 변수 스키마는 "Scott"과 같은 대문자 이름으로 채워집니다. 항목이 NULL 인 경우 쿼리 범위는 모두 스키마 사용자입니다.
반환 값 분석
메소드 getTables의 리턴 값은 결과 세트 (resultSet)입니다. 결과 세트의 정보는 테이블의 관련 정보에 대해 20 개 이상의 항목이 JDK1.5로 예약됩니다. 그러나 모든 데이터가 20 개 이상의 항목을 반환하는 것은 아닙니다. 우리는 종종 네 가지 항목을 사용할 수 있습니다.
table_schem : Oracle의 경우 자본화 된 사용자 이름이며 MySQL의 경우 NULL입니다.
table_name : 테이블의 이름입니다.
table_cat = oracle의 경우 null 및 mysql의 데이터베이스 이름입니다.
table_type = 테이블 유형, 네 번째 매개 변수 유형 배열의 항목을 기반으로 테이블 및보기에 사용됩니다.
import java.sql.connection; import java.sql.databasemetadata; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; import java.util.arraylist; java.util. String URL = "JDBC : Oracle : Thin : @localHost : 1521 : Zhyl"; // 서버 주소 :, 포트 번호 : 1521, 데이터베이스 인스턴스 이름 : Zhyl. 개인 문자열 username = "andatabase"; private string pw = "oracl"; private connection conn = null; // 사용자 이름과 비밀번호는 직접 생성됩니다. public connection openconn () {try {class.forname ( "oracle.jdbc.driver.oracledriver"); try {conn = drivermanager.getConnection (url, username, pw);} catch (sqlexception e) {// auto-auto-generated catch.printstacktrace (classecection) (classecectecectactrace.printstacktrace); todo 자동 생성 캐치 블록 .printstacktrace ();} return conn;} public resultet executeQuery (String SQL) {dababase db = new dababase (); resultet rs = null; connection con = db.openconn (); try {statement sm = con.createstatement (); rs = sm.executeQuery (SQL); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } return rs;} public void close () {try {conn.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} // 데이터베이스에서 모든 테이블의 테이블 이름을 가져 와서 목록 구조에 추가합니다. 공개 목록 getTablenamelist (Connection Conn)는 sqlexception을 던졌습니다. sqlexception {databasemetadata dbmd = conn.getmetadata (); // 현재 사용자의 모든 테이블에 액세스합니다. andatabase resultset rs = dbmd.getTables ( "null", "andatabase", "%", new String [] { "테이블" }); // system.out.println ( "kkkkkkkkk"+dbmd.getTables ( "null", "%", "%", "%", new String [] { "table"})); list tableNamElist = new ArrayList (); TableNamElist;} // 데이터 테이블에서 모든 열의 열 이름을 가져 와서 목록 구조에 추가하십시오. 공개 목록 getColumnnamElist (Connection Conn, String TableName)는 sqlexception {databasemetadata dbmd = conn.getmetadata (); resultSet rs = dbmd.getColumns (null, "%", tablename, "%"); list columnnamelist = new arrayList (); while (rs.next ()) {collectnamelist.add (rs.getString ( "collect_name"));} columnnamelist;} public static void main (string s [])는 sqlexception {dababase dbconn = new dababase (); connection conn = dbconn.openconn (if); 실패한 "); elsesystem.out.println ("Conn Enction "); try {list tablelist = dbconn.gettablenamelist (conn); // 현재 사용자의 모든 테이블을 가져 오십시오. // list tableList = dbconn.getColumnnamelist (conn,"login "); getColumnnamelist (conn,"login "); System.out.println (TableList.size ()); for (object 객체 : tableList) {string ss = (string) 객체; system.out.println (ss);}} catch (sqlexception e) {e.printstacktrace ();} finally {if (conn! = null) {try {conn.close ();} catch (sqlexcection e)}}위의 것은 Java Query Oracle Database의 모든 테이블 인 DatabasemetAdata (자세한 설명)의 전체 내용입니다. 모두가 wulin.com을 지원하기를 바랍니다