복붙노트

[SQL] 어떻게 자바에서 SQL 테이블의 존재를 감지 할 수 있습니까?

SQL

어떻게 자바에서 SQL 테이블의 존재를 감지 할 수 있습니까?

특정 테이블이 자바에서 주어진 SQL 데이터베이스에 존재하는 경우 어떻게 감지 할 수 있습니까?

해결법

  1. ==============================

    1.당신은 기존의 테이블에 대한 정보를 얻을 수 DatabaseMetaData.getTables ()를 사용할 수 있습니다.

    당신은 기존의 테이블에 대한 정보를 얻을 수 DatabaseMetaData.getTables ()를 사용할 수 있습니다.

    이 방법은 투명하게 작동하고 데이터베이스 엔진의 독립적입니다. 나는 뒤에서 정보 스키마 테이블을 조회 생각합니다.

    편집하다:

    여기에 기존의 모든 테이블 이름을 출력 예입니다.

    DatabaseMetaData md = connection.getMetaData();
    ResultSet rs = md.getTables(null, null, "%", null);
    while (rs.next()) {
      System.out.println(rs.getString(3));
    }
    
  2. ==============================

    2.사용 java.sql.DatabaseMetaData.getTables (NULL, NULL, YOUR_TABLE, 널 (null)). 테이블이 존재하는 경우, 당신은 하나 개의 레코드와의 ResultSet을 얻을 것이다.

    사용 java.sql.DatabaseMetaData.getTables (NULL, NULL, YOUR_TABLE, 널 (null)). 테이블이 존재하는 경우, 당신은 하나 개의 레코드와의 ResultSet을 얻을 것이다.

    DatabaseMetaData.getTables 참조

  3. ==============================

    3.이것은 언어 별하지만, 데이터베이스 고유의 문제가 아니다. 당신은 특정 개체의 존재에 대한 데이터베이스의 메타 데이터를 쿼리 것입니다.

    이것은 언어 별하지만, 데이터베이스 고유의 문제가 아니다. 당신은 특정 개체의 존재에 대한 데이터베이스의 메타 데이터를 쿼리 것입니다.

    예를 들어 SQL 서버의 경우 :

    SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[table]')
       AND type in (N'U')
    
  4. ==============================

    4.테이블을 조회하는 쿼리를 작성 / 그 테이블을 나열합니다 볼 (이 DB 공급 업체에 따라 다름). 자바에서 해당 전화.

    테이블을 조회하는 쿼리를 작성 / 그 테이블을 나열합니다 볼 (이 DB 공급 업체에 따라 다름). 자바에서 해당 전화.

    INFORMATION_SCHEMA.TABLES을 인터넷 검색을하는 것은 많은 도움이 될 것입니다.

  5. ==============================

    5.DB를에 따라, 당신이 할 수있는 (MySQL의)

    DB를에 따라, 당신이 할 수있는 (MySQL의)

    SHOW TABLES
    

    또는 (오라클)

    SELECT * FROM user_objects WHERE object_type = 'TABLE'
    

    또는 SQL Server에 대한 또 다른 한가지. 오라클 하나의 MySQL 또는 추가 필터의 결과 순환.

  6. ==============================

    6.왜 그냥 (SQL Server 용)을 sysobjects에 있는지 확인하지?

    왜 그냥 (SQL Server 용)을 sysobjects에 있는지 확인하지?

    SELECT [name] FROM [sysobjects] WHERE type = 'U' AND [name] = 'TableName'
    
  7. ==============================

    7.JDBC의 기능, 데이터베이스 벤더 독립적가있다 - [() java.sql.DatabaseMetaData의 # 1의 getTables]를 [표 1]

    JDBC의 기능, 데이터베이스 벤더 독립적가있다 - [() java.sql.DatabaseMetaData의 # 1의 getTables]를 [표 1]

    당신은 ()로 java.sql.Connection # 된 getMetaData를 호출하여 DatabaseMetaData의 인스턴스를 얻을 수 있습니다

    [1] : http://java.sun.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getTables(java.lang.String, java.lang.String의, java.lang.String의, java.lang.String의 [])

  8. ==============================

    8.ALL ANSI 호환 데이터베이스의 경우 : (MySQL은, SQL 서버 2005/2008, 오라클, PostgreSQL을, SQLLite, 어쩌면 다른 사람)

    ALL ANSI 호환 데이터베이스의 경우 : (MySQL은, SQL 서버 2005/2008, 오라클, PostgreSQL을, SQLLite, 어쩌면 다른 사람)

    select 1 from information_schema.tables where table_name = @tableName
    
  9. ==============================

    9.더비 : 이것은 JDBC를 위해 나를 위해 일한 것입니다 :

    더비 : 이것은 JDBC를 위해 나를 위해 일한 것입니다 :

    //Create Staff table if it does not exist yet
    String tableName = "STAFF";
    boolean exists = conn.getMetaData().getTables(null, null, tableName, null).next();
    if(!exists){
        s = conn.createStatement();
        s.execute("create table staff(lastname varchar(30), firstname varchar(30), position varchar(20),salary double,age int)");
        System.out.println("Created table " + tableName);
    }
    

    TABLENAME 모두 대문자이어야합니다.

  10. ==============================

    10.MS 액세스의 경우 :

    MS 액세스의 경우 :

    Select Count(*) From MSysObjects 
    Where type=1 And name='your_table_name_here'
    
  11. from https://stackoverflow.com/questions/927807/how-can-i-detect-a-sql-tables-existence-in-java by cc-by-sa and MIT license