2013-11-24 18 views
1

我有問題與SQL查詢語句。如何正確地將參數值傳遞給sql查詢?當我點擊按鈕時,它顯示「INVALID ALTER COMMAND」。 Old_table_name,New_table_name是文本字段如何正確地將參數值傳遞給sql查詢? java,netbeans

public void Change_table_name(String old_name, String new_name){ 
    try{ 
     Statement stmt=con.createStatement(); 
     ResultSet res=stmt.executeQuery("Alter table"+old_name.trim()+"Rename to"+new_name.trim()); 
     Table_Database.setModel(DbUtils.resultSetToTableModel(res)); 

    }catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 
} 

private void Change_table_nameActionPerformed(java.awt.event.ActionEvent evt) {             
    String old_name = Old_table_name.getText().toString(); 
    String new_name = New_table_name.getText().toString(); 
    Change_table_name(old_name, new_name); 

} 

回答

0

您提供一些空間查詢..這樣..

"Alter table "+old_name.trim()+" Rename to "+new_name.trim()); 
+0

感謝您的回覆。它改變了表名,但現在當我再次運行程序時,它說表或視圖不存在。錯誤代碼:942。它正在調用舊的表名而不是新的表名。但是,在數據庫查看器中,表名稱已更改。 – abekmuratov

0

你在你的方法錯誤,更改到下面的方法

public void Change_table_name(String old_name, String new_name){ 
try{ 
    Statement stmt=con.createStatement(); 
    ResultSet res=stmt.executeQuery("Alter table "+old_name.trim()+" Rename to "+new_name.trim()); 
    Table_Database.setModel(DbUtils.resultSetToTableModel(res)); 

}catch(Exception e){ 
    JOptionPane.showMessageDialog(null, e); 
} 
} 

試試這個給空間如果沒有工作再給單引號,

public void Change_table_name(String old_name, String new_name){ 
try{ 
    Statement stmt=con.createStatement(); 
    ResultSet res=stmt.executeQuery("Alter table '"+old_name.trim()+"' Rename to '"+new_name.trim()+"'"); 
    Table_Database.setModel(DbUtils.resultSetToTableModel(res)); 

}catch(Exception e){ 
    JOptionPane.showMessageDialog(null, e); 
} 
} 
+0

感謝您的回覆! :)插入單引號後,它說:無效的表名稱。我該怎麼辦? – abekmuratov

+0

這個命令後我需要更新我的jtable嗎? – abekmuratov

+0

只需嘗試更新和測試。 – Ajeesh

0

您還應該使用executeUpdate()而不是executeQuery()。正如Ajeessh指出的那樣,「Alter table ...」不返回任何結果集。