2017-08-09 108 views
0

我在java中使用jdbc创建了postgresql中的架构。它似乎工作正常,但我需要一个函数来创建模式,我想知道是否有可能创建一个名称通过变量的架构...这是我的类CreateSchema:在java中使用名称传递的名称创建架构

是否有可能?

String sql = "CREATE SCHEMA centro"; 

在这一行“centro”就像一个变量。

public static void main(String[] args) { 
    Connection conn = null; 
    Statement stmt = null; 
    try { 
     Class.forName("org.postgresql.Driver"); 

     System.out.println("Connecting to database..."); 
     conn = DriverManager.getConnection(DB_URL, USER, PASS); 

     System.out.println("Creating Schema..."); 
     stmt = conn.createStatement(); 

     String sql = "CREATE SCHEMA centro"; 
     stmt.executeUpdate(sql); 
     System.out.println("Schema created successfully..."); 
    } catch (SQLException se) { 
     se.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (stmt != null) { 
       stmt.close(); 
      } 
     } catch (SQLException se2) { 
     } 
     try { 
      if (conn != null) { 
       conn.close(); 
      } 
     } catch (SQLException se) { 
      se.printStackTrace(); 
     } 
    } 

谢谢。

+0

如果'串SCHEMANAME = “炫酷”'你是问,如果像'字符串SQL = “创建模式” + schemaName'.can做些什么呢? –

+0

是的,这是我的问题 –

+0

这就是你的答案然后:-) –

回答

0

如果我理解正确,那么你只是简单的字符串串联后。

因此,举例来说,如果你运行的命令行应用程序,并提供第一个参数为“炫酷”,该代码会

public static void main(String[] args) { 
    //all your other stuff 

    String sql = "CREATE SCHEMA " + args[0]; // -> "CREATE SCHEMA centro" 
} 

或者,如果你想在代码中的某处指定它

public static void main(String[] args) { 
    //all your other stuff 

    String schema = "centro"; 

    String sql = "CREATE SCHEMA " + schema; // -> "CREATE SCHEMA centro" 
} 
+0

它不起作用,给我的错误org.postgresql.util.PSQLException:错误:语法错误在或附近“SCHEMAnameS –

+0

@GabrielaRdz你忘了之间的空间'CREATE SCHEMA' and your schema name。 – rorschach

1

首先,您可以连接到postgresql,而无需获取数据库名称到您的BASE_URL。关于你的问题。是的,您可以通过将SQL语句连接到给定名称来创建或删除数据库:"CREATE DATABASE " + databseName

所以,你的代码可能如下:

public static void main(String[] args) { 
    Connection conn = null; 
    Statement stmt = null; 
    try { 
     Class.forName("org.postgresql.Driver"); 

     System.out.println("Connecting to database..."); 
     conn = DriverManager.getConnection(DB_URL, USER, PASS); 

     System.out.println("Creating Schema..."); 
     stmt = conn.createStatement(); 

     String dbName = "centro"; // or get it from command line 
     String sql = "CREATE SCHEMA " + dbName; 
     stmt.executeUpdate(sql); 
     System.out.println("Schema created successfully..."); 
    } catch (SQLException se) { 
     se.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (stmt != null) { 
       stmt.close(); 
      } 
     } catch (SQLException se2) { 
     } 
     try { 
      if (conn != null) { 
       conn.close(); 
      } 
     } catch (SQLException se) { 
      se.printStackTrace(); 
     } 
    } 
+0

:(give the error:org.postgresql.util.PSQLException:ERROR:syntax error at or near“SCHEMAnameEschema” –

+0

似乎你忘记了SCHEMA之后的空格,是不是? –

+0

然而,你也可以使用这个语句:''CREATE DATABASE“+ dbName' –