2014-02-20 2 views
0

java에서 MySql create table 문을 작성하려고합니다. 그러나 내가 직면하고있는 도전은 내 테이블의 열 이름이 사용자가 입력 한 문자열 배열에 저장된다는 것입니다. 직선 앞으로 열 이름을 알고 있지만 이번에는 내가 문자열 배열에서받은 데이터를 기반으로 즉석에서 테이블을 만들려고 할 때Java에서 테이블 정의를 동적으로 만드는 방법은 무엇입니까?

동적으로 테이블 문을 만들려면 어떻게 추가합니까? ? 어떤 도움말/팁?

아래의 작성 테이블은 정적 테이블입니다.

static String[] StopNamesForDB; 

    Set<String> set = new LinkedHashSet<String>(StopNames); 
    StopNamesForDB = new String[set.size()]; 

     for (String string : set) { 


      StopNamesForDB[i] = string; 
      i++; 
     } 


    String sql = "CREATE TABLE Route3 "+ 
       "(id INTEGER not NULL, " + 
       " first VARCHAR(255), " + 
       " last VARCHAR(255), " + 
       " age INTEGER, " + 
       " PRIMARY KEY (id))"; 
    stmt.executeUpdate(sql); 
+0

당신은 테이블을 생성하고 열을 알고있을 때 당신은 나중에 변경할 수 있습니다. – Peshal

+0

열 이름이 문자열 배열에 포함되어 있다고 가정합니다. 열 데이터 유형은 어떻습니까? 모두 동일합니까 (예 : varchar())? 정적 예제에서 기본 키와 필수 NOT NULL 제약 조건을 포함합니다. 만들려는 동적 테이블에서 모든 열을 null로 지정할 수 있습니까? 기본 키가 있습니까? 기본 키는 사용자가 정의 할 수 있습니까 (아니면 단순한 int입니까?)? 이 질문에 대한 대답을 통해 동적으로 테이블을 만드는 코드를 만드는 방법이 결정됩니다. – MichaelMilom

답변

0
 StringBuilder sql = new StringBuilder(); 

    sql.append("create table route3("); 

    for(String name : StopNamesForDB) 
    { 
     sql.append(name).append(","); 
    } 

    sql.append("PRIMARY KEY (").append(StopNamesForDB[0]).append(")"); 

    sql.append(")"); 

    stmt.executeUpdate(sql.toString()); 
관련 문제