2016-08-19 3 views
3

Ich bin vertraut mit der Verwendung von Java Prepared Statements zum Einfügen/Aktualisieren einer Tabelle. In Orakel können Sie einen Kommentar zu einer Tabelle hinzufügen, wie würde ich eine vorbereitete Anweisung dazu verwenden?Java PreparedStatement Kommentar zur Tabelle

Das war mein erster Versuch ohne Glück;

PreparedStatement stmt = con.prepareStatement("comment on table my_table is q'[?]'"); 
stmt.setString(1, description); 
stmt.executeUpdate(); 
+1

'Comment' ist eine DDL-Anweisung Daher können Sie Bind-Variablen nicht verwenden, so wie Sie Bind-Variablen nicht in einer 'create table'-Anweisung verwenden können. Sie müssten die vollständige SQL-Anweisung zusammenstellen und diese an Oracle senden. Außerdem werden DDL-Anweisungen tatsächlich in der Vorbereitungsphase ausgeführt, so dass es keinen Sinn macht, ein 'PreparedStatement' zu verwenden. –

Antwort

0

können Sie verwenden System Oracle-Tabelle und setzen Kommentar dort mit PreparedStatement, wie folgt aus:

PreparedStatement stmt = con.prepareStatement(
    "UPDATE user_tab_comments SET comments = ? WHERE table_name = 'my_table'"); 

Oder versuchen einfache Aussage zu verwenden:

String commentOnTableSQL = String.format("COMMENT ON TABLE my_table is '%s'", comment); 
Statement statement = dbConnection.createStatement(); 
statement.execute(commentOnTableSQL); 
+1

Ich hoffe, dass ein 'update' auf' user_tab_comments' fehlschlagen würde. Das direkte Aktualisieren einer Datenwörterbuch-Tabelle ist eine schreckliche Idee. Es ist nicht unterstützt und wenn es funktioniert, führt das fast immer zu einer Art subtiler Korruption. Oracle hindert Sie daran, das zu tun, aber wenn Sie genug Privilegien haben und Sie "Glück" haben, können Sie eine Ansicht finden, die Sie technisch ändern können. –

+0

@JustinCave Ich habe die Antwort bearbeitet und den zweiten Weg hinzugefügt. –

Verwandte Themen