2014-02-20 4 views
0

Я пытаюсь создать инструкцию mysql create table в java. Однако проблема, с которой я сталкиваюсь, заключается в том, что имя столбца таблицы хранится в массиве String, введенном пользователем. Прямо работать, если я знаю имена столбцов, но на этот раз я пытаюсь создать таблицу «на лету» на основе данных, которые я получаю в своем массиве StringКак создать динамическое определение таблицы в Java?

Как добавить динамически в инструкцию create table ? любая помощь/советы?

Таблица создания ниже статическая.

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

Вы говорите, что имена столбцов содержатся в массиве String. Как насчет типов данных столбцов? Все ли они одинаковы (т. Е. 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()); 
Смежные вопросы