2017-02-23 1 views
-2
public void create(String name) { 
    create_name = name; 
    try { 
     getConnection(); 
     q = "create table ? (emp_id number (10), emp_name varchar (15))"; 
     pst = con.prepareStatement(q); 

     pst.setString(1, create_name); 
     int j = pst.executeUpdate(); 

     JOptionPane.showMessageDialog(new JDialog(), "Table is Created"); 

    } catch (Exception e) { 
     JOptionPane.showMessageDialog(new JDialog(), "Table is not Created"); 
    } 

} 
+0

haben Sie einen Fehler bekommen, hat Ihre Tabelle erstellt, was ist Ihre Frage genau? –

+1

Sie können Objektbezeichner wie Tabellennamen nicht parametrisieren –

Antwort

1

Zum Erstellen einer Tabelle mit PrepapredStatement dies nicht möglich ist, zu schaffen, denn wenn man

q= "create table ? (emp_id number (10), emp_name varchar (15))"; 

So in Wirklichkeit machen es diese Abfrage hier ausführen:

create table 'table_name' (emp_id number (10), emp_name varchar (15)) 

und die 'table_name' ist verboten, wenn Sie eine Tabelle erstellen, so dass ich stattdessen vorschlagen, mit Ihrem PrepapredStatement wie folgt zu spielen:

try { 
    Class.forName(driver); 
    Connection connection = DriverManager.getConnection(DB_URL, DB_username, DB_password); 
    PreparedStatement preparedStatement = connection.prepareStatement("create table ? (emp_id number (10), emp_name varchar (15))"); 
    preparedStatement.setString(1, "table_name"); 

    System.out.println(preparedStatement.toString()); 
    Statement st = connection.createStatement(); 
    int i = st.executeUpdate(preparedStatement.toString().replaceAll("\"", "\"")); 

    JOptionPane.showMessageDialog(new JDialog(), "Table is Created");   

} catch (ClassNotFoundException | SQLException e) { 
    JOptionPane.showMessageDialog(new JDialog(), "Table is not Created"); 
} 

Die Idee ist einfach, wenn Sie Ihr Statement vorbereiten Sie die vorherige Abfrage erhalten Sie es wie diese preparedStatement.toString() bekommen können, so können Sie die '' im Start ändern und am Ende mit "" weil " in Oracle erlaubt ist create a table with a name which contain spaces.

Verwandte Themen